【问题标题】:Error: "The sandbox is not in sync with the Podfile.lock..." after installing RestKit with cocoapods错误:“沙箱与 Podfile.lock 不同步...”在使用 cocoapods 安装 RestKit 后
【发布时间】: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是否可以解决问题,但这可能是对正在发生的事情的提示。跨度>

标签: cocoapods restkit-0.20


【解决方案1】:

你可以试试这个:

  1. 删除 Pods 文件夹
  2. 删除 Podfile.lock
  3. 运行 pod 安装
  4. 清理 + 构建

【讨论】:

    【解决方案2】:

    我一直在寻找几个小时,我找到了如下解决方案:

    就我而言,方法 1 有效。

    方法一:

    1. 选择目标 > 转到 Build Phases > 点击 Link Binary With Libraries > 删除所有 libPods.a 文件

    2. 打开终端 > 直接进入你的项目 > 运行:

        pod install
      
    3. 清理并构建项目

    ref.1

    方法二:

    1. 打开终端 > 直接进入你的项目 > 运行:

       pod deintegrate --verbose    
       pod install --verbose
      

    ref.2

    方法三:

    1. 选择目标 > 进入 构建设置 > 点击“+”号

    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 并使它们保持同步。这个没有问题

    是不是这样,如果:

    1. 您和您的团队不要提交/Pods 目录
    2. 您的PodfilePodfile.lock 中有合并冲突,但没有意识到。或者你没有同时提交PodfilePodfile.lock
    3. 那么既然Xcode不处理PodfilePodfile.lock,那么你的项目自然就可以构建成功了。
    4. 但是如果您检查目标的构建阶段,您会看到以下内容

    该脚本记录在 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】:

        这些简单的步骤对我有用:

        1. 关闭您的工作区
        2. 运行pod install --repo-update
        3. 打开你的工作区,重建(如果你清理你的构建文件夹会更合理)。

        【讨论】:

          【解决方案7】:

          我可以通过单击 Product->Clean Build Folder 来解决此问题。

          【讨论】:

            【解决方案8】:

            确保已设置 pod 配置文件。

            【讨论】:

              【解决方案9】:

              我尝试了pod install的各种组合,删除node_modules&重新安装,清理&重建xcode项目,甚至重新启动我的电脑。这些都不适合我...

              我的修复是在我的项目的根目录中运行pod --version。我不知道如何或为什么,但这成功地安装了缺少的依赖项,所以我想我会在这里分享它以防它帮助其他人:)

              【讨论】:

                【解决方案10】:

                我可以通过更新 CocoaPods 来解决这个问题。

                我。项目清理

                1. 在项目导航器中,选择您的项目
                2. 选择您的目标
                3. 删除 Build Phases > Link Binary With Libraries 中的所有 libPods*.a

                二。更新 CocoaPods

                1. 启动终端并转到您的项目目录。
                2. 使用命令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 并解决了我的问题

                    我。项目清理

                    1. 在项目导航器中,选择您的项目
                    2. 选择您的目标
                    3. 删除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】:

                                  我的工作答案是:

                                  1. 通过以下命令安装更新您的 cocoapods: 豆荚更新
                                  2. 通过此命令安装您的新 pod。 吊舱安装
                                  3. 最后一个命令: 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】:

                                      我尝试了所有方法,但问题仍然存在。 之后我做了这个,它尽快工作(尽可能顺利)。

                                      1. 打开 .xcworkspace 文件。
                                      2. 如果在 Xcode 10 上使用 Cordova,则更改为旧版构建系统。
                                      3. 转到 Podfile 的目标/项目。选择部署目标为 11+
                                      4. 然后将调试和发布更改为 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。

                                                【讨论】:

                                                  猜你喜欢
                                                  • 2021-06-16
                                                  • 2020-11-23
                                                  • 1970-01-01
                                                  • 2019-04-11
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 1970-01-01
                                                  • 2021-04-13
                                                  • 1970-01-01
                                                  相关资源
                                                  最近更新 更多