项目构build中的CocoaPods错误

我无法build立一个使用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没有被设置。

Podfile:

 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' 

当我对Podfile进行重大更改时,我遇到了类似的问题。 我的解决scheme是删除工作区文件并再次运行pod install

 rm -rf MyProject.xcworkspace pod install 

TLDR:这很可能是Xcode的一个bug,closures和重新打开项目通常是最简单的修复。 假设一切正常configuration 。


删除Pods目录然后运行pod install时,偶尔会出现相同的错误。

在项目信息中一切都显示正确:

在这里输入图像描述

但是,当我转到目标的“用户定义的构build设置”时,对于一个或多个configuration,PODS_ROOT条目完全缺失或为空。 这会导致构build上的以下错误:

在这里输入图像描述

最简单的解决方法是在Xcode中closures项目并重新打开它

如果您转到目标的“ 生成设置”并在“ 全部 ”上进行筛选,则您现在将看到PODS_ROOT项没有错误:

在这里输入图像描述

现在应该build立没有错误。


注意:即使Cocoa Pods官方的AFNetworking iOS Example也有这个问题,这让我相信这是Xcode的一个bug。

另一种解决方法是手动将configuration更改为None ,然后返回到其原始值:

在这里输入图像描述

转到目标的“ Build Settings ,并确保“用户定义”部分中的PODS_ROOT的值等于${SRCROOT}/Pods PODS_ROOT

在这里输入图像描述

更新: podfile.lock是必要的, 应该被版本控制忽略,它跟踪在特定的pod安装中安装的库的版本。 (这分别与rails和php依赖pipe理的gemfile.lock和composer.lock类似)。 要了解更多信息,请阅读文档 。 信贷去cbowns 。


在我的情况下,我所做的是,我正在做一些房子清理我的项目(即分支出的集成testing作为一个GIT子模块,删除重复的文件等),并把最终结果推到一个git远程回购。所有克隆我的回购的客户都遭受了上述错误。 受上述Hlung的评论的启发,我意识到有一些悬挂的pod脚本试图运行一些不存在的文件。 所以我去了我的目标构build阶段,并删除了所有与cocoa豆荚有关的剩余阶段(和Hlung的评论,他build议删除Copy Pods Manifest.lockcopy pod resources ..我的名字可能不同b / c我使用Xcode 5的重点是删除那些悬而未决的构build阶段)。

所以似乎CocoaPods没有为我的项目设置configuration。 它们需要基于在Pods/Target Support Files/Pods Pods.xcconfig中find的Pods.xcconfig 。 要做到这一点,我必须做到以下几点:

  1. 将这个文件拖到Xcode的Xcode项目中,select不复制。
  2. 现在我们的项目中有一个参考,我们可以设置configuration: 在这里输入图像描述

然后我有另一个生成错误,可能会或可能不会有关系。 Copy Pods Resources定义的shell脚本path不正确。

 "${SRCROOT}/Pods/Pods-resources.sh" 

解决不正确。 看起来SRCROOT正在增加一个不存在的额外目录。 所以我硬编码path到Project文件夹。

这让我build立。

为什么这么多应该节省时间的事情最终会把它吃掉呢?

注意:请参阅@abood的解答。

我有一个类似的问题,这是什么工作:

  1. 在Xcode中:
    • 清洁
    • 在Xcode / Window / Organizer / Project / Your Project中删除派生数据
    • Pod目录(它包含configuration文件,删除文件不只是引用!)
    • 在Project / Configurations(debugging/释放)中删除了所有对每个目标的podconfiguration文件的引用
    • 从所有目标中删除“目标/build立阶段/复制豆荚资源”
    • 从所有目标中删除“目标/构build设置/用户定义/ PODS_ROOT”
  2. 退出Xcode
  3. 在你的项目目录中:
    • rm -rf Pods
    • (可选)rm -rf YourProject.xcworkspace
    • rm -rf Podfile.lock
  4. 荚安装
  5. 在Xcode中打开YourProject.xcworkspace

我通过执行以下步骤摆脱了同样的问题:

  • Xcode->Product->Clean Build Folder (在产品上按Alt键看到它)
  • 打开Xcode->Window->Organizer并selectProjects选项卡。 然后find你的项目,并删除项目的derived data

通过执行以下操作简单解决:

  • (sudo)gem安装cocoapods

  • 荚安装

  • 清洁和build立

看来这个问题是由我们的一个团队成员有一个更新的cocoapodsgem安装引起的。

  1. 在崇高的文本中打开.xcodeproj文件
  2. 删除这两行,如果你有干净的豆荚文件夹,我的意思是如果你得到上面的错误,你删除豆荚文件夹后

有相同的问题说/Pods/Pods-resources.sh:没有这样的文件或目录,即使在与豆荚相关的文件等被删除。

通过去目标 – >构build阶段,然后删除构build阶段“复制单元资源”摆脱它。

我最近有同样的问题。 我已经尝试了所有可能的build议,除了这个插件已经为我工作:

https://github.com/kylef/cocoapods-deintegrate

清理当前的cocoapods集成之后,剩下的要删除的是Podfile,Podfile.lock和.xcworkspace。 然后再安装一遍。

我希望我会帮助这个人。

这个问题解决了。

  1. select您的项目的目标
  2. select生成设置
  3. 打开用户定义的下拉列表
  4. 将密钥PODS_ROOT的值更改为$ {SRCROOT} / Pod

以上步骤的屏幕截图

我觉得这里有个bug。
对于我来说,我删除了Pods文件夹和Podfile.lock ,并再次执行pod install来解决问题。
这个消息是忽略.. 🙁

这不是很直观。 我到基础项目设置,然后我硬编码path到我的pod.lock和pod.manifest下Check Pods Manifest.lock,因为他们留在不同的文件夹中,所以我的path如下所示:

 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 

在我的情况下,这是一个testing目标,我从我的podfile中删除了所有的豆荚(因为我添加了豆荚,后来意识到我不需要在该目标中)。 这里没有其他解决scheme为我工作。

  1. 转到导致问题的目标的项目设置中的“构build阶段”选项卡。

  2. 删除名为“Check Pods Manifest”和“Copy Pods Resources”的部分

  3. 里面的“链接二进制与库”删除libPods-YourTarget.a

  4. 在“信息”选项卡的项目设置中,展开“configuration”,并将debugging和发布的目标configuration设置为“无”。 (这将修复一些缺less的文件警告)

  5. 删除项目的派生数据(窗口>项目>删除[您的项目旁边]),然后重新启动Xcode。 构build/运行目标。

这件事情让我感到很快乐!

  1. 删除项目文件夹中的Podfile.lock文件
  2. 删除项目文件夹中的Pods文件夹
  3. 在您的项目文件夹中执行pod install
  4. 在Xcode中做一个“干净的”
  5. 重build你的项目

就我而言,问题是错误的。 解决scheme在这里http://guides.cocoapods.org/using/troubleshooting.html

如果某些东西看起来不起作用,首先要确保不会完全覆盖项目构build设置中从Pods.xcconfig文件中设置的任何选项。 要将值添加到项目的构build设置中的选项,请在$(inheritance)前加上值列表。

我有这个问题。

我修复它的方式是彻底删除Pod实现并重新实现它。 确保从所有目标上的“Build Phases”中删除“Copy Pods Resources”和“Check Pods Manifest.lock”,如下所示: 如何从项目中删除CocoaPods?

为了摆脱这个错误,我需要删除Pods目录并删除Podfile.lock文件。

在我的情况下,我把Podfile.lock&Manifest.lock放在源代码控制中,但是我忘了将Pods-Project.debug(release).xcconfig文件添加到源代码控制中(通过错误地将* .xcconfig添加到.gitignore中)由于完全相同的原因得到相同的编译错误,PODS_ROOT没有被设置。

因此,如果目标是在克隆repo之后,项目可以立即构build并运行,而无需在计算机上安装CocoaPods,那么可以在源代码pipe理中添加整个Pods目录,或者添加Podfile.lock,Manifest.lock,项目的xcconfig文件和将xcconfig文件放到源代码控制中。

我没有把私有.xcconfig合并构build设置与默认的CocoaPodsconfiguration到源代码pipe理。

你可以尝试以下。 它为我固定。

  1. 安装gem install cocoapods-deintegrate
  2. 安装gem install cocoapods-clean
  3. goto荚解体
  4. 荚清洁
  5. 荚安装

这些插件将从您的项目的cocoapods中删除,并将安装新鲜。

在使用豆荚之前,我创build了多个目标。 后来当我开始编译其他目标时,我必须在我的Podfile中添加link_with与目标列表。

我遇到过同样的问题。 回顾我最近的步骤后,我发现添加一个新目标的目标声明,然后运行pod install,是问题的原因:

在这里输入图像描述

重置我的分支和清理我的项目不起作用,因为Cocoapods至less修改了一个不在源代码控制之下的文件。 我知道这一点,因为一旦我将远程分支重置为提交之前添加额外的目标,并重新克隆回购,问题不再存在。

如果你有一个watchOS的目标:我突然发现,在手表扩展中有一个豆荚,但是在手表目标本身没有打破这个同样的错误。 解决的办法是把豆荚加到手表的目标上。

 gem install xcodeproj 

可能会帮助你。

请参阅吊舱安装失败与中止 – 新的Swift项目 。

如果您在创buildPodfile后添加了新的目标,只需删除Podfile,Podfile.lock,Pods文件夹和工作区,然后使用init pods – >然后把你的pod安装到pod上

只需按产品 – >清洁 – >生成 – >完成

在podfile中进行更改,如下所示:

较旧的荚文件

 target :EmojiKeyboard, :exclusive => true do 

更改了pod文件

 target 'EmojiKeyboard' do 

它会工作得很好。