错误:“沙箱与 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.lockPods/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。这需要承诺,以便团队中的每个开发人员都可以确保他们拥有完全相同的版本。

假设您下载了团队的代码。在您的项目的根目录中,您只有 PodfilePodfile.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.lockPodfile.lock 不同步的一种情况:

我的意思是如果你从主分支拉,那么你会得到主的Podfile 并锁定文件。如果您随后对Podfile 进行更改,然后运行pod install,那么您将更新Podfile.lockManifest.lock 并使它们保持同步。这个没有问题

是不是这样,如果:

    您和您的团队不要提交/Pods 目录 您的PodfilePodfile.lock 中有合并冲突,但没有意识到。或者你没有同时提交PodfilePodfile.lock 那么既然Xcode不处理PodfilePodfile.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 的项目,也会一遍又一遍地导致错误消息。在我看来,XcodeCocoaPods 中的某些(Firebase、RestKit)pod 看起来像是一个错误。要包含 pod,我可以简单地编辑我的 config.xml 并运行 cordova platform add iOS,它会自动为我完成所有工作。但不确定它是否适用于所有场景。

编辑:我以前的iOS/Xcode 有一个Podfile,但今天最新的# DO NOT MODIFY -- auto-generated by Apache CordovaPodfile 中。这在我的脑海中打开了一盏灯来尝试这种方法。看起来有点微不足道,但很有效,我的 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 updatepod 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.xcconfigFlutter/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:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思