项目构建中的 CocoaPods 错误
Posted
技术标签:
【中文标题】项目构建中的 CocoaPods 错误【英文标题】:CocoaPods Errors on Project Build 【发布时间】:2013-06-12 18:11:10 【问题描述】:我无法构建使用 CocoaPods 的项目。我收到以下错误:
diff: /../Podfile.lock: No such file or directory
diff: Manifest.lock: No such file or directory error:
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.`
$ pod install
似乎工作正常,并将Pods
项目添加到我的工作区。我试过 $ pod update
但这没有帮助。
似乎没有设置PODS_ROOT
。
Pod 文件:
platform :ios, '6.0'
workspace 'Example.xcworkspace'
xcodeproj 'example/Example.xcodeproj'
pod 'TestFlightSDK', '~> 1.3.0-beta.5'
pod 'TestFlightLogger', '~> 0.0.2'
pod 'CocoaLumberjack', '~> 1.6.2'
pod 'Reachability', '~> 3.1.0'
pod 'SBJson', '~> 3.2'
pod 'MKMapViewZoom', '~> 1.0.0'
【问题讨论】:
一个简单的“pod install”解决了这个问题:) 重要![!] From now on use MyProject.xcworkspace.
不是旧的`.xcodeproj'
当你在模拟器中测试时,只有一个白屏
见***.com/a/65783259/5175709
【参考方案1】:
当我对 Podfile 进行重大更改时,我遇到了类似的问题。我的解决方案是删除工作区文件并再次运行pod install
:
rm -rf MyProject.xcworkspace
pod install
【讨论】:
表示 cocoapods 没有正确安装。运行sudo gem install cocoapods
gem install cocoapods
更好。大多数时候sudo
不应该是宝石所必需的。
你的回答让我很开心。我被困了几个小时。脱帽
感谢您,它修复了错误。 FWIW,执行gem update cocoapods
后出现错误
修复了问题。执行“pod update”时出错【参考方案2】:
TLDR:这很可能是 Xcode 的一个错误,关闭并重新打开项目通常是最简单的修复方法。假设其他一切都是configured properly。
我在删除Pods
目录然后运行pod install
时偶尔会遇到同样的错误。
项目信息中的一切都显示正确:
但是,当我转到目标的用户定义的构建设置时,PODS_ROOT 条目要么完全丢失,要么对于一个或多个配置为空。这会导致构建时出现以下错误:
最简单的解决方法是在 Xcode 中关闭项目并重新打开它。
如果您转到目标的 Build Settings 并过滤 All,您现在将看到 PODS_ROOT
条目没有错误:
它现在应该没有错误地构建。
注意:即使是 Cocoa Pods 的官方 AFNetworking iOS Example 也有这个问题,这让我相信这是 Xcode 的一个错误。
另一种解决方法是将配置手动更改为None
,然后恢复为原始值:
【讨论】:
原来是给我的!我的 $PODS_ROOT 设置不正确 在长时间搜索修复后,由于您的解决方案,我得以顺利进行。我只需将 Configurations 更改为 None 并返回到 Pods 这很好,没有任何帮助。【参考方案3】:转到目标的Build Settings
并确保PODS_ROOT
的值等于“用户定义”部分中的$SRCROOT/Pods
。
【讨论】:
效果很好。这正是我们所需要的。 我必须使用这条路径和中提琴将PODS_ROOT
添加到我的目标中(我还将它添加到header search paths
作为“$(PODS_ROOT)”递归
不适合我。【参考方案4】:
更新:podfile.lock
是必需的,不应被版本控制忽略,它会跟踪在特定 pod 安装时安装的库的版本。 (分别类似于gemfile.lock 和composer.lock 用于rails 和php 依赖管理)。要了解更多信息,请阅读docs。归功于cbowns。
在我的情况下,我所做的是我正在为我的项目做一些房屋清洁(即将集成测试分支为 git 子模块..删除重复文件等)..并将最终结果推送到 git 远程repo .. 克隆我的 repo 的所有客户都遇到了上述错误。受上面Hlung's 评论的启发,我意识到有一些悬空的 pod 脚本试图针对一些不存在的文件运行。所以我进入了我的目标构建阶段,并删除了所有与可可豆荚有关的剩余阶段(以及 Hlung 的评论,他建议删除 Copy Pods Manifest.lock
和 copy pod resources
.. 我的命名不同,也许 b/c 我是使用 Xcode 5.. 关键是删除那些悬空的构建阶段)..
【讨论】:
这不是Podfile.lock
的用途:阅读Cocoapods' documentation on "Working with teams" 了解更多信息。
@cbowns 你是绝对正确的,谢谢你的评论。我更新了我的答案。
我删除了我的 xcworkspace 文件并安装了 pod,但仍然收到相同的错误消息。
@jowie 同样在这里...如果您解决了问题,请指导我。【参考方案5】:
看来 CocoaPods 没有为我的项目设置配置。它们需要基于Pods/Target Support Files/Pods
中的Pods.xcconfig
。为了使它起作用,我必须执行以下操作:
-
在 Xcode 中将此文件拖到我的 Xcode 项目中,选择不复制。
现在我们的项目中有一个引用,我们可以设置配置:
然后我遇到了另一个可能相关也可能不相关的构建错误。 Copy Pods Resources
中定义的 shell 脚本的路径不正确。
"$SRCROOT/Pods/Pods-resources.sh"
解决不正确。似乎 SRCROOT 正在添加一个路径中不存在的额外目录。所以我硬编码了 Project 文件夹的路径。
这让我可以构建。
为什么这么多本应为你节省时间的东西最后却吃光了它?
注意:请参阅@abood 的答案以获得解释。
【讨论】:
如果您看到此错误是因为您从目标中删除了所有 pod,那么您将不再拥有任何 pod 脚本,但它仍会尝试运行它。您必须进入目标构建阶段,并删除Copy Pods Manifest.lock
和 Copy Pods Resources
阶段。并删除 Link Binary with Libraries 中的 libPods.a
。
@Hlung 出色的评论.. 它实际上解决了问题的根本原因,我尝试了上面的解决方案,但我仍然得到了 Podfile.lock (大多数 .gitignore
文件被配置为忽略.. 理所当然).. 该文件不应该留下来。如果你把它写出来作为答案,我会给你一个 +1!
@abbood 写下来,我会给你胜利。
只是想在 CocoaPods 的 Github 页面上添加 this issue 提到检查构建阶段可能是这个确切的问题(因为我有多个目标,所以更相似)。问题导致我在这里向下滚动....【参考方案6】:
我有一个类似的问题,这是有效的:
-
在 Xcode 中:
干净
删除 Xcode/Window/Organizer/Project/Your Project 中的派生数据
Pod 目录(它包含配置文件,删除文件不只是引用!)
删除了对 Project/Configurations(调试/发布)中每个目标的 pod 配置文件的所有引用
从所有目标中删除了“目标/构建阶段/复制 Pod 资源”
从所有目标中删除了“目标/构建设置/用户定义/PODS_ROOT”
退出 Xcode
在您的项目目录中:
rm -rf Pods
(可选)rm -rf YourProject.xcworkspace
rm -rf Podfile.lock
pod 安装
在 Xcode 中打开 YourProject.xcworkspace
【讨论】:
不要随意移除你的工作空间——即使你的工作空间是由 Cocoapods 创建的,它也是由你维护的。 这对我有用,删除了与 pod 相关的所有文件并重新安装了 pod。【参考方案7】:我通过以下步骤解决了同样的问题:
Xcode->Product->Clean Build Folder
(在产品上按住 alt 键即可查看)
打开Xcode->Window->Organizer
并选择Projects
选项卡。然后找到您的项目并删除该项目的derived data
。
【讨论】:
为我工作。很生气。现在很开心。 就我而言,我在 github 项目上遇到了麻烦。所以我不得不完全删除项目目录(rm -rf),做了上面的,然后解压项目,安装pod并打开xcworkspace,没有错误! 为我工作。谢谢。【参考方案8】:只需执行以下操作即可解决:
(sudo) gem install cocoapods
pod 安装
清理并构建
问题似乎是由我们的一名团队成员安装了更新的 cocoapods gem 引起的。
【讨论】:
我不得不重新安装 cocoapods 并重新启动 XCode 来解决这个问题。 必须运行gem install cocoapods
,然后运行pod install
,以及该线程中提到的所有其他内容......【参考方案9】:
-
以 sublime 文本打开 .xcodeproj 文件
删除这两行,如果您有干净的 pods 文件夹,我的意思是如果您在删除 pods 文件夹后遇到上述错误
【讨论】:
给我一个 ld: library not found for -lPods-/*My Project Name*/Tests 这也会给我未来的 pod 安装错误吗?【参考方案10】:有同样的问题说 /Pods/Pods-resources.sh:没有这样的文件或目录 即使在与 pod 相关的文件等被删除之后。
通过转到目标->构建阶段然后删除构建阶段“复制 Pod 资源”来摆脱它。
【讨论】:
很酷的修复,但恐怕在清理项目和派生数据后,您可能会注意到为什么需要这个:) 然后我从使用 Pod 的文件名中得到“.h”文件未找到错误【参考方案11】:我最近遇到了同样的问题。我已经尝试了所有可能的建议,除了这个插件对我有用:
https://github.com/kylef/cocoapods-deintegrate
在清理了当前的 cocoapods 集成之后,剩下要删除的是 Podfile、Podfile.lock 和 .xcworkspace。然后重新安装。
我希望我能帮助别人。
【讨论】:
这是唯一为我解决的问题。 我很高兴能帮助查理【参考方案12】:这个问题已经解决了。
-
选择您项目的目标
选择构建设置
打开用户定义下拉列表
将键 PODS_ROOT 的值更改为 $SRCROOT/Pods
【讨论】:
我喜欢你的。但我仍然得到同样糟糕的错误。这是什么!!!没有人对此有正确的答案。 @YumYumYum :然后尝试重新安装您的 pod。 尝试了所有解决方案,但这个有效。就我而言,它仍然是在发布中设置路径。【参考方案13】:我认为这里有一个错误。
对我来说,我删除了Pods
文件夹和Podfile.lock
并再次执行pod install
以解决问题。
此消息忽略..:(
【讨论】:
【参考方案14】:这不是很直观。我去了基础项目设置,然后在 Check Pods Manifest.lock 下硬编码了我的 pod.lock 和 pod.manifest 的路径,因为它们实际上位于不同的文件夹中,所以我的路径如下所示:
diff "/Users/admin/Desktop/Experimental/projectfolder/Podfile.lock" "/Users/admin/Desktop/Experimental/projectfolder/Pods/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then
cat << EOM
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
EOM
exit 1
fi
【讨论】:
脚本好像是CocoaPod生成的。你把这个脚本放在哪里了?【参考方案15】:您可以尝试以下方法。它为我修好了。
-
安装 gem install cocoapods-deintegrate
安装 gem install cocoapods-clean
转到 pod 解体
豆荚清洁
pod 安装
插件将从您项目的 cocoapods 中删除,并将重新安装。
【讨论】:
【参考方案16】:就我而言,这是一个测试目标,我从我的 podfile 中删除了所有 pod(因为我添加了后来意识到我不需要在该目标中的 pod)。这里没有其他解决方案对我有用。
转到目标的项目设置中的构建阶段选项卡 这造成了麻烦。
删除名为“Check Pods Manifest”和“Copy Pods”的部分 资源”
在“Link Binary With Libraries”中删除 libPods-YourTarget.a
在信息选项卡的项目设置中,展开“配置”并 将目标的配置设置为 None 以进行调试和 释放。 (这将修复一些丢失的文件警告)
删除项目的派生数据(窗口 > 项目 > 删除 [next 到您的项目)并重新启动 Xcode。构建/运行目标。
【讨论】:
【参考方案17】:这让我很开心!
-
删除项目文件夹中的 Podfile.lock 文件
删除项目文件夹中的 Pods 文件夹
在你的项目文件夹中执行
pod install
在 Xcode 中进行“清理”
重建您的项目
【讨论】:
【参考方案18】:我的 IONIC 项目遇到了同样的问题,我首先尝试了所有解决方案,但没有运气。
如果您仍然有同样的问题,请检查Build Settings -> User-Defined settings
中是否存在以下设置
1.PODS_ROOT
2.PODS_PODFILE_DIR_PATH
如果不存在,则添加它,
PODS_ROOT = $SRCROOT/Pods
PODS_PODFILE_DIR_PATH = $SRCROOT/
它会解决问题,解决方案link
【讨论】:
【参考方案19】:就我而言,问题出在错误的方式上。解决方案在这里http://guides.cocoapods.org/using/troubleshooting.html
如果某些东西似乎不起作用,首先要确保你是 没有完全覆盖从 Pods.xcconfig 文件中设置的任何选项 在项目的构建设置中。为您的选项添加值 项目的构建设置,在值列表前面加上 $(inherited)。
【讨论】:
【参考方案20】:我遇到了这个问题。
我修复它的方法是完全删除 Pod 实现并重新实现它。确保从此处所述的所有目标的“构建阶段”中删除“复制 Pods 资源”和“检查 Pods Manifest.lock”:How to remove CocoaPods from a project?
【讨论】:
【参考方案21】:为了摆脱这个错误,我需要删除Pods
目录并删除Podfile.lock
文件。
【讨论】:
我同意你的观点,我做了你所做的一切,包括删除工作区文件,它确实对我有用。【参考方案22】:在我的情况下,我确实将 Podfile.lock 和 Manifest.lock 放在源代码管理中,但我忘记将 Pods-Project.debug(release).xcconfig 文件添加到源代码管理中(错误地将 *.xcconfig 添加到 .gitignore) ,然后我得到相同的编译错误,原因完全相同,没有设置 PODS_ROOT。
因此,如果目标是在克隆 repo 后,项目可以立即构建和运行,而无需在机器上安装 CocoaPods,您要么在源代码管理中添加整个 Pods 目录,要么添加 Podfile.lock、Manifest.lock、项目的xcconfig 文件和 Pod 的 xcconfig 文件进行源代码管理。
我没有将构建设置与默认 CocoaPods 配置合并到源代码管理的 private .xcconfig。
【讨论】:
【参考方案23】:花了几个小时后,我找到了解决方案,转到“构建阶段” 然后“检查 Pods Manifest.lock” 勾选“仅在安装时运行脚本”
稍后谢谢我 ;)
【讨论】:
【参考方案24】:在使用 pod 之前,我已经创建了多个目标。后来当我开始编译其他目标时,我不得不在我的 Podfile 中添加带有目标列表的 link_with。
【讨论】:
【参考方案25】:我有同样的问题。回顾我最近的步骤后,我发现为新目标添加目标声明,然后运行pod install,
是问题的原因:
重置我的分支和清理我的项目不起作用,因为 Cocoapods 修改了至少一个不受源代码控制的文件。我知道这一点,因为一旦我在添加额外目标之前将远程分支重置为提交,并重新克隆了 repo,问题就不再存在了。
【讨论】:
【参考方案26】:如果你有 watchOS 目标:我突然发现,在手表 extension 中有 pod 而不是在 watch 目标本身中会出现同样的错误。解决方案是将 pod 也添加到 watch 目标中。
【讨论】:
【参考方案27】:gem install xcodeproj
可以帮到你。
见pod install fails with abort - New Swift project。
【讨论】:
【参考方案28】:如果你在创建 Podfile 后添加了新的 target,只需删除 Podfile、Podfile.lock、Pods 文件夹和工作空间 然后 初始化 pods -> 然后放置你的 pods 吊舱安装
【讨论】:
【参考方案29】:在尝试上述操作后,我意识到我在pod install
上遇到了错误
[!] CocoaPods 没有设置你项目的基本配置 因为您的项目已经有一个自定义配置集。
这是导致错误的原因,因为 cocoapods 没有将 .xcconfig 文件添加到我的项目中。
为了解决这个问题,我去了我项目的Info
标签。对于所有方案和目标,将我的基于配置文件设置为 None
。然后重新跑pod install
查看此链接了解更多信息。 Cocoapods Warning - CocoaPods did not set the base configuration of your project because because your project already has a custom config set
【讨论】:
【参考方案30】:在我的例子中,我不小心在配置文件的末尾输入了一个不必要的点,导致了这个奇怪的问题。请确保您的配置文件不包含任何错误!
【讨论】:
以上是关于项目构建中的 CocoaPods 错误的主要内容,如果未能解决你的问题,请参考以下文章
xcode 7.3.1:使用 cocoapods 1.0.1 时构建失败
Xcodebuild-由于代码签名错误,Travis CI 无法归档使用 cocoapods 的项目?