错误:“沙箱与 Podfile.lock 不同步...”在使用 cocoapods 安装 RestKit 后
Posted
技术标签:
【中文标题】错误:“沙箱与 Podfile.lock 不同步...”在使用 cocoapods 安装 RestKit 后【英文标题】:Error: "The sandbox is not in sync with the Podfile.lock..." after installing RestKit with cocoapods 【发布时间】:2014-02-17 10:43:28 【问题描述】:在使用 cocoapods 安装 RestKit 后,我遇到了一个奇怪的问题。 在使用 cocoapods 解决我的项目的 RestKit 依赖项并尝试构建它之后,我遇到了这个错误:
沙盒与 Podfile.lock 不同步。运行“pod install”或更新您的 CocoaPods 安装。
我尝试运行pod install
,但没有任何变化。
以下是一些截图:
PODS:
- AFNetworking (1.3.3)
- RestKit (0.20.3):
- RestKit/Core
- RestKit/Core (0.20.3):
- RestKit/CoreData
- RestKit/Network
- RestKit/ObjectMapping
- RestKit/CoreData (0.20.3)
- RestKit/Network (0.20.3):
- AFNetworking (~> 1.3.0)
- RestKit/ObjectMapping
- RestKit/Support
- SOCKit
- RestKit/ObjectMapping (0.20.3)
- RestKit/Search (0.20.3):
- RestKit/CoreData
- RestKit/Support (0.20.3):
- TransitionKit (= 1.1.1)
- RestKit/Testing (0.20.3)
- SOCKit (1.1)
- TransitionKit (1.1.1)
DEPENDENCIES:
- RestKit (~> 0.20.0)
- RestKit/Search (~> 0.20.0)
- RestKit/Testing (~> 0.20.0)
SPEC CHECKSUMS:
AFNetworking: 61fdd49e2ffe6380378df37b3b6e70630bb9dd66
RestKit: 1f181c180105a92f11ec4f6cd7de37625e516d83
SOCKit: 2f3bc4d07910de12dcc202815e07db68a3802581
TransitionKit: d0e3344aac92991395d4c2e72d9c5a8ceeb12910
COCOAPODS: 0.29.0
【问题讨论】:
您是否按照错误提示尝试了Run 'pod install' or update your CocoaPods installation.
?
当然,我做到了,但没有成功
你可以在Podfile.lock
和Pods/Manifest.lock
中发布Restkit 的版本吗?当这些不相同时会发生该错误。
是的,我比较了它们,它们完全一样。
“沙盒”错误上方的错误是“diff: command not found”我不知道重新安装diff是否可以解决问题,但这可能是对正在发生的事情的提示。跨度>
【参考方案1】:
你可以试试这个:
-
删除 Pods 文件夹
删除 Podfile.lock
运行 pod 安装
清理 + 构建
【讨论】:
【参考方案2】:我一直在寻找几个小时,我找到了如下解决方案:
就我而言,方法 1 有效。
方法一:
选择目标 > 转到 Build Phases > 点击 Link Binary With Libraries > 删除所有 libPods.a 文件
打开终端 > 直接进入你的项目 > 运行:
pod install
清理并构建项目
ref.1
方法二:
打开终端 > 直接进入你的项目 > 运行:
pod deintegrate --verbose
pod install --verbose
ref.2
方法三:
选择目标 > 进入 构建设置 > 点击“+”号
添加 2 个用户定义的设置:[向左 = 向右]
PODS_ROOT = $SRCROOT/Pods
和
PODS_PODFILE_DIR_PATH = $SRCROOT/
ref.3
【讨论】:
我尝试了所有其他解决方案,但没有任何效果。方法 3 对我有用。 但是...通过方法 1 解决问题后,我遇到了另一个错误...仅显示最近的错误命令 PhaseScriptExecution 失败,退出代码非零 方法 2 对我有用。非常感谢。【参考方案3】:首先您必须了解Podfile.lock
是什么,然后了解Manifest.lock
是什么以及它的用途。
Podfile
包含您拥有的每个依赖项的(optimistic 或精确)版本。锁定文件只包含确切的版本。
一旦您执行pod install
,所有的 pod 都会被下载/安装到 /pods
目录中。您可能想提交它们,也可能不提交。这取决于你的团队。不由您的团队决定他们是否应该提交Podfile.lock
。这需要承诺,以便团队中的每个开发人员都可以确保他们拥有完全相同的版本。
Podfile
和 Podfile.lock
并且 Pods
目录未提交。
然后执行pod install
来创建Pods
目录。 您的每个 pod 版本的快照应该与 Podfile.lock 中所有 pod 的版本相匹配。
CocoaPods 进行了安全检查,以确保版本匹配
这就是Manifest.lock
发挥作用的地方。 Manifest.lock
是您本地计算机的锁。它必须与您的仓库中的最后一次提交(导致您的 Pod 发生更改)生成的 Podfile.lock
匹配。如果它不匹配,那么事情就搞砸了。
关于Manifest.lock 文件是什么的文档:
# Manifest.lock: A file contained in the Pods folder that keeps track of
# the pods installed in the local machine. This files is used once the
# exact versions of the Pods has been computed to detect if that version
# is already installed. This file is not intended to be kept under source
# control and is a copy of the Podfile.lock.
老实说,我只能想到Manifest.lock
和Podfile.lock
不同步的一种情况:
我的意思是如果你从主分支拉,那么你会得到主的Podfile
并锁定文件。如果您随后对Podfile
进行更改,然后运行pod install
,那么您将更新Podfile.lock
和Manifest.lock
并使它们保持同步。这个没有问题
是不是这样,如果:
-
您和您的团队不要提交
/Pods
目录
您的Podfile
或Podfile.lock
中有合并冲突,但没有意识到。或者你没有同时提交Podfile
和Podfile.lock
那么既然Xcode不处理Podfile
和Podfile.lock
,那么你的项目自然就可以构建成功了。
但是如果您检查目标的构建阶段,您会看到以下内容
该脚本记录在 here
# Adds a shell script build phase responsible for checking if the Pods
# locked in the Pods/Manifest.lock file are in sync with the Pods defined
# in the Podfile.lock.
#
# @note The build phase is appended to the front because to fail fast.
#
# @return [void]
这些行的作用是:执行diff
并确保您的Manifest.lock
即您的所有已安装pod 版本的本地 快照等于Podfile.lock
即您的repo 所有已安装 pod 版本的当前快照。
修复可能非常简单,只需确保您的 Podfile
是您想要的。然后运行pod install
。您还以某种方式意外地更改了您的/Pods
目录中的Manifest.lock
(或者如前所述,可能只提交了锁定文件而不是Podfile
,反之亦然)。删除/Pods
目录不会造成任何伤害。只需在之后执行pod install
。不要这样做pod update
,除非那是你想要的。
只要确保您从不删除Podfile.lock
,否则如果您删除pod install
,那么它会将所有依赖项更新到最新版本。
查看video 关于锁定文件也很有帮助,CocoaPods docs 关于如何将锁定文件以不同方式用于 pod 安装和 pod 更新,最后看看如何更详细地使用所有这些逻辑 this artsy blog on checksums。值得注意的是,单个空格会创建一个新的校验和,并且会使事情不同步。
【讨论】:
所有这些都没有帮助。可以肯定的是,测试本身是错误的并且会产生错误的失败。我不是第一次遇到不必要地失败的健全性检查。我将健全性检查编程为 WARNINGS 而不是错误是有原因的。【参考方案4】:检查 Pods 目标和 Runner 目标必须相同
1- 跑步者
2- 豆荚
【讨论】:
【参考方案5】:就我而言,这个问题是由于*.xcworkspace
文件损坏造成的。它在左侧的 Project Navigator 菜单中显示了我的项目的两个不同版本。
为了验证,我从位于Build Phases > Check Pods Manifest.lock
的 bash 脚本中删除了输出重定向 ( > /dev/null
),以便它将差异打印到 STDOUT。果然,阅读构建日志,我的 Podfile.lock 和 Manifest.lock 输出截然不同。
为了修复它,我删除了我的*.xcworkspace
,然后再次从我的ios
文件夹中运行pod install
。这会自动重新生成工作区文件。在 XCode 中打开该新文件,瞧,不再出现构建错误。
【讨论】:
【参考方案6】:这些简单的步骤对我有用:
-
关闭您的工作区
运行
pod install --repo-update
打开你的工作区,重建(如果你清理你的构建文件夹会更合理)。
【讨论】:
【参考方案7】:我可以通过单击 Product->Clean Build Folder 来解决此问题。
【讨论】:
【参考方案8】:确保已设置 pod 配置文件。
【讨论】:
【参考方案9】:我尝试了pod install
的各种组合,删除node_modules
&重新安装,清理&重建xcode项目,甚至重新启动我的电脑。这些都不适合我...
我的修复是在我的项目的根目录中运行pod --version
。我不知道如何或为什么,但这成功地安装了缺少的依赖项,所以我想我会在这里分享它以防它帮助其他人:)
【讨论】:
【参考方案10】:我可以通过更新 CocoaPods 来解决这个问题。
我。项目清理
-
在项目导航器中,选择您的项目
选择您的目标
删除 Build Phases > Link Binary With Libraries 中的所有 libPods*.a
二。更新 CocoaPods
-
启动终端并转到您的项目目录。
使用命令
pod install
更新 CocoaPods
【讨论】:
工作就像一个魅力,你可能想更新你的答案哟说运行命令 pod install 关于 I.3 - 您的意思是“构建阶段 > 将二进制文件与库链接”部分吗? 当我在项目目录中运行 pod install 命令时,我收到以下警告:不推荐使用隐式源。要继续使用当前机器上的所有源,请将以下内容添加到 Podfile 的顶部: source 'github.com/CocoaPods/Specs.git' 我还在 pod 文件中添加了此链接,但同样的事情发生了。请提出建议。 除此之外,我还必须删除所有与 CocoaPod 相关的构建阶段,例如“Check Pods Manifest.lock”和“Copy Pods Resources”。 @ Valery Pavlov 这些步骤有效,但在成功清理项目后,构建立即失败,出现相同的 3 个错误,我似乎无法摆脱下面的错误。我尝试完全删除所有 cocoapods,重新安装,更新,通过 xcode 重新启动等来完成所有这些。所有这些在终端中都成功执行,但构建继续失败。还有什么想法吗?错误:diff:/../Podfile.lock:没有这样的文件或目录 diff:/Manifest.lock:没有这样的文件或目录错误:沙箱与 Podfile.lock 不同步。运行“pod install”或更新您的 CocoaPods 安装。【参考方案11】:对我来说,这是 Ruby 版本号的问题。
我收到了错误:
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
在尝试了一百万件事之后,包括此线程中包含的大部分内容,我最终破解了位于以下位置的 pod 文件:usr/local/bin/pod
我更正了第一行以指向我机器上实际存在的 ruby 版本。我改变了:
#!/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
到
#!/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
经过几天的挣扎,将 3 改为 6 解决了所有问题。
【讨论】:
【参考方案12】:如果您使用 Windows 进行 Git 检出,并且 Podfile.lock 是使用 Windows (CRLF) 行结尾创建的,也会发生这种情况。
【讨论】:
【参考方案13】:我在上面混合了一些 cmets 并解决了我的问题
我。项目清理
-
在项目导航器中,选择您的项目
选择您的目标
删除
Build Phases > Link Binary With Libraries
中的所有libPods*.a
二。清理构建文件夹
在 XCode 中:Menu Bar → Product → Product -> Clean build Folder
三。更新 cocapods
运行pod update
【讨论】:
【参考方案14】:我在添加新的开发者帐户时收到此错误。我更改了项目名称下的Team
,但我错过了在Pods
文件夹下更新它。
我在Pods-> Signing -> Team
下的 Teams 选项下更新了新的开发者 ID 后解决了这个问题,错误消失了,构建成功了。
【讨论】:
【参考方案15】:通过安装 Cordova 版本 9 解决了我的 ionic 应用程序问题,尝试了上述所有与 xcode 相关联的解决方案,但都不适用于我的 ionic 应用程序
如果有人在使用他们的 cordova 应用程序时遇到同样的问题,请更新到 cordova 9 以解决此问题
【讨论】:
【参考方案16】:从这些答案中我完全没有发现任何问题。必须通过运行cordova platform add ios
再次创建项目。我注意到,即使是新生成的带有(在我的情况下)Firebase pod 的项目,也会一遍又一遍地导致错误消息。在我看来,Xcode
或 CocoaPods
中的某些(Firebase、RestKit)pod 看起来像是一个错误。要包含 pod,我可以简单地编辑我的 config.xml
并运行 cordova platform add iOS
,它会自动为我完成所有工作。但不确定它是否适用于所有场景。
编辑:我以前的iOS
/Xcode
有一个Podfile
,但今天最新的# DO NOT MODIFY -- auto-generated by Apache Cordova
在Podfile
中。这在我的脑海中打开了一盏灯来尝试这种方法。看起来有点微不足道,但很有效,我的 Firebase
功能也很有效。
【讨论】:
这是唯一对我有用的方法。尝试了所有其他人。我删除了平台并重新安装了“cordova platform add ios”。我也认为我有一个以前版本的 xcode 上使用的以前的平台/ios。【参考方案17】:我在使用 Ionic-3 时遇到了同样的问题,我做了上面提到的一些步骤,但没有一个对我有用。
对于离子 移除ios平台
$ ionic cordova platform remove ios
$ ionic cordova platform add ios
打开 xcode 然后尝试构建。 这对我有用:-)
【讨论】:
【参考方案18】:尝试在Podfile
中设置正确的目标,然后运行pod update
或pod install
【讨论】:
【参考方案19】:我在 Flutter 项目中遇到过这个问题。我刚刚在 xCode 中打开了 iOS 模块,并且 Build Clean Folder 为我工作。
【讨论】:
【参考方案20】: 转到构建阶段 -> 检查 Pods Manifest.lock 替换$PODS_ROOT/Manifest.lock
与:
$SRCROOT/Podfile.lock" "$SRCROOT/Pods/Manifest.lock
签入图片:
【讨论】:
这在 Cordova iOS 版本中对我有用,而接受的答案不起作用。 感谢您指出错误的根源,但这也没有解决我的问题。理想情况下,Cordova 不建议修改他们的 pod 文件,但如果我们删除 Podfile.lock 并使用修改后的 Podfile 再次执行 pod install ,应该不会出现错误。因此,作为最后一个选项,我评论了 if 条件,因为我觉得这不是必要的检查,因此我摆脱了这个问题。【参考方案21】:运行这个,你的错误就会消失
rm -rf Pods && gem install cocoapods && pod install
【讨论】:
【参考方案22】:我的工作答案是:
-
通过以下命令安装更新您的 cocoapods:
豆荚更新
通过此命令安装您的新 pod。
吊舱安装
最后一个命令:
sudo gem install cocoapods。
【讨论】:
【参考方案23】:我有同样的问题 我将所有内容更新为最新的 从: npm -v 6.4.1 节点-v v10.2.1 pod --version 1.5.3
到: npm -v 6.5.0 节点-v v11.8.0 pod --version 1.6.0
并修复它
【讨论】:
欢迎来到 SO,您可以参观 here,我们将永远感谢您的回答。即使您的答案可能是相关的,但根据您如何猜测提到的版本,它有点令人困惑,因为对此没有任何具体评论。此外,您的答案也不是很有帮助,因为它缺少您面临的实际根本原因,以及您的环境详细信息以及您为解决问题而执行的步骤。【参考方案24】:对我来说,在颤振中工作,由于现有配置,配置不会自动添加。
将#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"
添加到Flutter/Release.xcconfig
和Flutter/Debug.xcconfig
解决了这个问题。
【讨论】:
【参考方案25】:我尝试了所有方法,但问题仍然存在。 之后我做了这个,它尽快工作(尽可能顺利)。
-
打开 .xcworkspace 文件。
如果在 Xcode 10 上使用 Cordova,则更改为旧版构建系统。
转到 Podfile 的目标/项目。选择部署目标为 11+
然后将调试和发布更改为 Pods-.build/release。就我而言,它是 App.debug/release。附上图片。希望能帮助到你。
【讨论】:
【参考方案26】:pod deintegrate <PROJECT>.XCODEPROJ // will deintegrate cocoapods
pod install // installs the pods
【讨论】:
【参考方案27】:我使用捆绑包中的可可豆荚安装。
安装捆绑器 在项目根目录中添加 Gemfile 在 Gemfile 中添加所需的宝石bundle install
然后总是使用bundle exec pod install
如果您不知道这些步骤之一的操作方法,在 google 上搜索会有所帮助:)
【讨论】:
【参考方案28】:请执行以下步骤:
1:删除项目文件夹中的 Podfile.lock 文件
2:删除项目文件夹中的 Pods 文件夹
3:在项目文件夹中执行“pod install”
4:在 Xcode 中进行“清理”
5:重建您的项目
【讨论】:
【参考方案29】:您需要在自定义的 xcconfig 中包含 Pods 生成的 xcconfig 路径。对我来说,这是由于 xcconfig 文件配置错误造成的。
【讨论】:
【参考方案30】:我有同样的错误。首先我更新 cocoapods 使用
sudo gem install cocoapods
然后使用对我有用的 Pod install 命令安装 pod。
【讨论】:
以上是关于错误:“沙箱与 Podfile.lock 不同步...”在使用 cocoapods 安装 RestKit 后的主要内容,如果未能解决你的问题,请参考以下文章
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。
Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误