309

在使用 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
4

52 回答 52

390

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

一、项目清理

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

二、更新 CocoaPods

  1. 启动终端并转到您的项目目录。
  2. 使用命令更新 CocoaPodspod install
于 2014-04-05T08:00:35.897 回答
128

经过多次尝试,我设法解决了这个问题。变量 ${PODS_ROOT} 没有设置,我做了下面的技巧。转到 Build Phases -> 检查 Pods Manifest.lock 并替换

diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null

diff "${SRCROOT}/Podfile.lock" "${SRCROOT}/Pods/Manifest.lock" > /dev/null

它帮助到我。

于 2015-06-24T11:32:56.230 回答
59

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

就我而言,方法1有效。

方法一:

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

  2. 打开终端>直接到您的项目>运行:

      pod install
    
  3. 清理并构建项目

参考文献1

方法二:

  1. 打开终端>直接到您的项目>运行:

     pod deintegrate --verbose    
     pod install --verbose
    

参考文献2

方法三:

  1. 选择目标>转到构建设置>单击“+”号

  2. 添加2个用户定义的设置:[向左=向右]

     PODS_ROOT = ${SRCROOT}/Pods
    

    PODS_PODFILE_DIR_PATH = ${SRCROOT}/

参考文献3

于 2018-12-13T05:50:41.493 回答
47

如果您从 Podfile 中的目标中删除所有 pod,例如

target 'myTarget' do
pod 'great-stuff', '~> 4.0'  // you deleted this last pod
end

您需要从 Xcode 目标Build Phases中手动删除这些构建步骤:

  • 检查 Pods Manifest.lock
  • 复制 Pod 资源

Cocoapods(当前稳定版本 0.37.2)在您运行pod install.

于 2015-07-07T09:20:21.420 回答
37

从项目中删除 pod 并重新安装对我有用。

有一个不错的GitHub 存储库,可以从项目中完全删除 pod。

只需保留 PodFile 的备份并运行以下命令。

  • gem install cocoapods-deintegrate
  • gem 安装 cocoapods-clean
  • 进入项目目录并运行pod deintegrate
  • 再次运行pod clean
  • 运行pod 安装

清洁并运行。

于 2016-04-15T12:44:17.077 回答
15

如果您看到如下错误:

差异:/../Podfile.lock:没有这样的文件或目录差异:/Manifest.lock:没有这样的文件或目录错误:沙箱与 Podfile.lock 不同步。运行“pod install”或更新您的 CocoaPods 安装。

那么你的项目中 Cocoapods 就有问题了。有时 cocoapods 可能会失去同步,您需要重新启动 cocoapods。您应该能够通过以下方式解决此错误:

  1. 删除项目文件夹中的 Podfile.lock 文件
  2. 删除项目文件夹中的 Pods 文件夹
  3. 在您的项目文件夹中执行“pod install”
  4. 在 Xcode 中进行“清理”
  5. 重建你的项目
于 2018-02-23T23:21:23.180 回答
13

更改目标名称后

我的问题是使用旧目标名称的 xcconfig。

  • 转到项目文件->信息->配置
  • 删除了旧的 xcconfig(调试和发布)
  • 吊舱安装

它会更新到新的。

此外,如果您缺少 .h 文件,这就是原因(pod 标头搜索路径在这些 xcconfig 中)

于 2016-02-03T14:54:44.090 回答
9

我找到了我的解决方案:运行:pod update而不是pod install. 错误已修复!

于 2017-02-23T03:16:25.987 回答
9
  • 转到构建阶段 -> 检查 Pods Manifest.lock
  • 代替
${PODS_ROOT}/Manifest.lock

和:

${SRCROOT}/Podfile.lock" "${SRCROOT}/Pods/Manifest.lock

签入图片:

在此处输入图像描述

于 2019-09-10T12:41:23.900 回答
6

就我而言,在集成 WatchKit 应用程序后我遇到了同样的错误。为了解决问题,我需要在 Podfile 中添加 WatchKit 的两个目标:

target 'MyProject WatchKit App' do
    platform :watchos, '2.0'
    shared_pods
end

target 'MyProject WatchKit App Extension' do
    platform :watchos, '2.0'
    shared_pods
end

PS:也许这发生在我身上,因为我MyProject WatchKit App最初错误地为目标安装了 pod。

于 2016-07-04T10:18:36.983 回答
5

运行这个,你的错误就会消失

rm -rf Pods && gem install cocoapods && pod install

于 2019-07-19T18:45:38.233 回答
5

尝试在其中设置正确的目标Podfile,然后运行pod updatepod install

ios平台目标

于 2019-12-16T22:16:06.170 回答
5

首先,您必须了解是什么,Podfile.lock然后了解是什么Manifest.lock以及它在哪里使用。

保存您拥有的每个依赖项的Podfile乐观或精确)版本。锁定文件仅包含确切的版本。

完成pod install后,所有 pod 都会下载/安装到/pods目录中。您可能想提交它们,也可能不提交。这取决于你的团队。不取决于您的团队的是决定他们是否应该提交Podfile.lock。这需要承诺,以便团队中的每个开发人员都可以确保他们拥有完全相同的版本。

  • 假设您下载了团队的代码。在您的项目的根目录中,您只有Podfile并且Podfile.lockPods目录未提交。
  • 然后你pod install创建Pods目录。每个 pod 版本的快照应该与 Podfile.lock 中所有 pod 的版本匹配。
  • CocoaPods 进行了安全检查,以确保匹配的版本

这就是Manifest.lock发挥作用的地方。Manifest.lock是您本地机器的锁创建的。它必须与Podfile.lock您的存储库中的最后一次提交(导致您的 Pod 发生更改)生成的匹配。如果它不匹配,那么有些事情就搞砸了。

关于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.lockandPodfile.lock不同步的一种情况:

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

这是否只是这样,如果:

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

在此处输入图像描述

该脚本记录在这里

#     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]

这些行的作用是:执行 adiff并确保您的所有已安装 pod 版本的本地快照等于Manifest.lock即您的repo 的所有已安装 pod 版本的当前快照。Podfile.lock

修复可能非常简单,只要确保你Podfile是你想要的。然后运行pod install。您还以某种方式意外地对您的目录Manifest.lock内部进行了更改/Pods(或者如前所述,可能只提交了锁定文件但没有提交,Podfile反之亦然)。删除/Pods目录不会造成任何伤害。做一个pod install之后。pod update除非那是你想要的,否则不要这样做。

只要确保你永远不会删除,Podfile.lock否则pod install它会将所有依赖项更新到它可以的最新版本。


观看有关锁定文件的视频也很有帮助, CocoaPods 文档介绍了如何将锁定文件用于 pod install 与 pod update 的不同用途,最后看看 这个关于校验和的艺术博客如何更详细地使用所有这些逻辑。值得注意的是,单个空格会创建一个新的校验和,并且会使事情不同步。

于 2021-01-18T23:02:32.003 回答
4

我在配置错误的 xcconfig 文件时遇到了这个问题。

Pod 生成的 xcconfig 未正确 #included 在我使用的自定义 xcconfig 中。这导致 $PODS_ROOT 未设置,导致失败diff "/../Podfile.lock" "/Manifest.lock",原因很明显,Pods 将其误解为同步问题。

于 2016-01-18T01:15:53.723 回答
4

对我来说,问题是我通过复制现有目标在我的应用程序中创建了一个新目标,但忘记将目标添加到Podfile. 出于某种原因,克隆的目标确实可以正常工作几天而没有问题,但过了一段时间,由于此错误而无法构建。我必须在 Podfile 中为我的克隆项目目标创建一个新的目标条目,然后运行pod install​​.

于 2016-09-02T10:46:44.103 回答
4

如果你从github下载项目或者从其他地方复制,那么依赖库不存在,就会出现这个问题。

你只需要进入cd终端project/project_name directoryls用来检查是否有Podfile文件。

如果存在Podfile,您只需要安装依赖项:

pod install
于 2018-01-14T02:28:37.793 回答
3

对我有用的步骤 ( XCode 8.3.3/XCode 9 beta with a Swift 3.1 project)

 - Navigate to your project directory
 - pod install //which then asks you to do the next step
 - pod repo update //takes a while to update the repo
 - pod update
 - pod install
 - Close Xcode session
 - Open and Clean the project
 - Build/Run

make sure you open the .xcworkspace file rather than the project file (.xcodeproj) when working with pods。这应该可以解决任何链接错误,例如“Apple Mach -O Linker command failed”

于 2017-09-09T05:31:00.800 回答
3

请执行以下步骤:

1:删除项目文件夹中的 Podfile.lock 文件

2:删除项目文件夹中的 Pods 文件夹

3:在您的项目文件夹中执行“pod install”

4:在 Xcode 中进行“清理”

5:重建你的项目

于 2018-07-20T11:52:15.563 回答
3

我尝试了一切,但问题仍然存在。之后我做了这个并且它尽快工作(尽可能顺利)。

  1. 打开 .xcworkspace 文件。
  2. 如果在 Xcode 10 上使用 Cordova,请更改为旧版构建系统。
  3. 转到 Podfile 的目标/项目。选择部署目标为 11+
  4. 然后将调试和发布更改为 Pods-.build/release。就我而言,它是 App.debug/release。附上图片。希望能帮助到你。 更改 Pod 中的调试版本
于 2018-12-24T03:03:24.943 回答
3

我的工作答案是:

  1. 通过以下命令安装更新您的 cocoapods:pod update
  2. 通过此命令安装新的 pod。吊舱安装
  3. 最后一个命令:sudo gem install cocoapods。
于 2019-04-07T17:58:29.610 回答
3

从这些答案中,我完全没有解决任何问题。必须通过运行再次创建项目cordova platform add ios。我注意到,即使是新生成的带有(在我的情况下)Firebase pod 的项目,也会一遍又一遍地导致错误消息。在我看来,对于某些(Firebase、RestKit)pod 来说,这看起来像是一个Xcode错误CocoaPods。要包含 pod,我可以简单地编辑 myconfig.xml并运行cordova platform add iOS,它会自动为我完成所有工作。不确定它是否适用于所有场景。

编辑:我有一个Podfile来自以前的iOS/ Xcode,但今天最新的# DO NOT MODIFY -- auto-generated by Apache CordovaPodfile. 这在我的脑海中打开了一盏灯来尝试这种方法。看起来有点微不足道,但可以工作,我的Firebase功能也得到了解决。

于 2020-04-19T14:05:57.427 回答
2

你可以试试这个:

  1. 删除 Pod 文件夹
  2. 删除 Podfile.lock
  3. 运行 pod 安装
  4. 清理 + 构建
于 2022-01-04T18:43:47.943 回答
1

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

  1. 删除项目文件夹中的 Podfile.lock 文件
  2. 删除项目文件夹中的 Pods 文件夹
  3. 在项目文件夹中执行 pod install
  4. 在 Xcode 中进行“清理”
  5. 重建你的项目
于 2016-05-31T19:36:17.320 回答
1

当你这样做

pod install --verbose

确保:

1-您在正确的目录中。大多数时候,当一个 github 项目被下载时,会有一个 master 文件夹。在调用 pod install --verbose 之前,您需要位于终端中的实际项目名称文件夹(masterfolder/project 文件夹)中

2- 删除旧的 pod lock 文件夹,然后使用 xcode clean 清理项目并执行 pod install。

3-保持你的rvm更新。

于 2016-07-31T08:21:06.837 回答
1

我的问题是可可豆版本,所以我安装了最新版本: sudo gem install cocoapods --pre 然后pod update

这对我有用

于 2017-06-29T15:11:30.923 回答
1

如果你申请项目清理的方式,你的项目还是报错。

您可以转到选项卡构建阶段,然后查找Check Pods Manifest.lock并删除脚本。

然后键入命令以删除Pods这样的文件夹rm -rf Pods

然后你需要通过命令删除 Podfile.lockrm Podfile.lock

可能,根据您可以删除文件的情况your_project_name.xcworkspace

最后,您需要安装 Pod 的命令pod install --repo-update

希望这个解决方案能为您提供。快乐编码:)

于 2017-11-24T07:18:58.417 回答
1

我有同样的错误。首先,我使用更新 cocoapods

sudo gem install cocoapods

然后使用对我有用的 Pod install 命令安装 pod。

于 2018-06-05T11:50:42.470 回答
1

对我来说,在颤振中工作,由于现有配置,配置不会自动添加。

添加#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"Flutter/Release.xcconfigFlutter/Debug.xcconfig

解决了这个问题。

于 2019-01-23T14:02:56.273 回答
1

我在 Flutter 项目中遇到了这个问题。我刚刚在 xCode 中打开了 iOS 模块,并且 Build Clean Folder 为我工作。

于 2019-09-18T07:52:20.493 回答
1

我对 Ionic-3 也有同样的问题,我做了上面提到的一些步骤,但没有一个对我有用。

For Ionic 移除 ios 平台

$ ionic cordova platform remove ios
$ ionic cordova platform add ios

打开 xcode 然后尝试构建。这对我有用:-)

于 2020-03-14T09:34:44.647 回答
1

通过安装cordova 9解决了我的离子应用程序问题,尝试了上述所有与xcode相关的解决方案,但都不适用于我的离子应用程序

如果有人在他们的科尔多瓦应用程序中遇到同样的问题,请更新到科尔多瓦 9 来解决这个问题

于 2020-04-28T13:56:13.143 回答
1

如果您使用 Windows 进行 Git 检出,并且 Podfile.lock 是使用 Windows (CRLF) 行结尾创建的,也会发生这种情况。

于 2021-02-08T09:13:16.727 回答
1

检查 Pods 目标和 Runner 目标必须相同

1-赛跑者

在此处输入图像描述

2-豆荚

在此处输入图像描述

于 2021-06-23T10:10:56.417 回答
0

如果你的豆荚是空的

  1. 删除副本 pod 资源并检查 pod 清单。
  2. 锁定项目的构建阶段设置
于 2015-12-07T11:19:31.633 回答
0

我的问题是,当我的开发人员在项目中添加了一个 pod,然后我使用 github 拉取项目时,出现了错误。我运行了 pod install 并使用我的开发人员添加的新库更新了 pod。希望能帮助到你。

于 2016-03-09T06:30:24.890 回答
0

我对最新的 ComponentKit 0.14 有同样的问题。原因是 PODS_ROOT 没有设置,我发现解决方案是在 ComponentKit.xcconfig 中添加一行:

#include "../Pods/Target Support Files/Pods-ComponentKit/Pods-ComponentKit.debug.xcconfig"
于 2016-06-07T04:46:19.237 回答
0

检查你的项目,Pod 可能没有被推送到 Git。所以很明显 compile 会因为找不到 Pods 目录而中断

 diff "${PODS_ROOT}/../../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null

pod install我通过在导航到我的项目目录后在终端中发出来解决了这个问题。

确实,我遇到了一个错误cannot find pod command,这意味着cocoapods没有安装。这是通过 修复的gem install cocoapods。如果您收到任何依赖项错误,只需安装报告丢失的每个命令。就我而言,我必须更新 Ruby,然后cocoapods正确安装,然后我就可以使用命令了pod install

PS。如果您有 Pods 目录,请尝试pod update. 也许您的图书馆需要更新。

于 2016-08-08T12:22:42.390 回答
0

当我尝试删除以前安装的库时遇到了这个问题

@Michal 的回答帮助了我

删除或卸载之前添加的库:cocoapods

于 2016-12-20T09:23:14.003 回答
0

我不小心删除了我尝试安装 pod 的文件夹,然后解压了该文件夹。
就像这样:1) cd 在你的项目文件夹中 2) 压缩你的项目 3) 删除项目文件夹 4) 解压缩文件夹 5) 从现在开始即使你有这个文件夹,你也应该从终端再次转到这个文件夹

于 2017-04-13T11:25:27.230 回答
0

我有错误:

差异:/../Podfile.lock:没有这样的文件或目录差异:/Manifest.lock:没有这样的文件或目录错误:沙箱与 Podfile.lock 不同步。

我第一次从 bitbucket 中提取请求。我清理了我的项目并尝试了所有方法(pod 安装、pod 更新等),但上述答案均不适合我。然后我只是检查我安装 pod 的路径并更正它并再次安装,它就可以工作了。确保在 .xcodeproj 或 .xcworkspace(如果已经存在)存在之前给出路径。可能有人从中受益。

于 2018-05-04T10:55:53.270 回答
0

我使用捆绑包中的可可豆荚安装。

  • 安装捆绑器
  • 在项目根目录中添加 Gemfile
  • 在 Gemfile 中添加所需的 gem
  • bundle install
  • 然后总是使用bundle exec pod install

如果您不知道这些步骤之一的操作方法,在谷歌上搜索会有所帮助:)

于 2018-08-15T13:00:25.070 回答
0
pod deintegrate <PROJECT>.XCODEPROJ // will deintegrate cocoapods
pod install // installs the pods
于 2018-11-02T15:20:27.860 回答
0

我遇到了同样的问题,我将所有内容更新到最新 版本:npm -v 6.4.1 node -v v10.2.1 pod --version 1.5.3

到:npm -v 6.5.0 节点 -v v11.8.0 pod --version 1.6.0

并修复它

于 2019-02-06T17:20:06.010 回答
0

添加新的开发者帐户时出现此错误。我更改了Team项目名称,但我错过了在Pods文件夹下更新它。

一旦我在下可用的 Teams 选项下更新了新的开发人员 ID,我就解决了这个问题Pods-> Signing -> Team,错误消失了,构建成功。

于 2020-11-03T04:48:35.500 回答
0

我混淆了上面的一些评论,这解决了我的问题

一、项目清理

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

二、清理构建文件夹

在 XCode 中:Menu Bar → Product → Product -> Clean build Folder

三、更新 cocapods

pod update

于 2020-12-07T04:12:41.503 回答
0

对我来说,这是 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 解决了所有问题。

于 2021-03-19T21:27:12.020 回答
0

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

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

于 2021-04-21T10:19:46.583 回答
0

确保设置了 pod 配置文件。

在此处输入图像描述

于 2021-04-29T08:51:10.033 回答
0

我可以通过单击“产品”->“清理构建文件夹”来解决此问题。

在此处输入图像描述

于 2021-05-21T03:48:01.530 回答
0

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

  1. 关闭你的工作区
  2. pod install --repo-update
  3. 打开你的工作区,重建(如果你清理你的构建文件夹会更合理)。
于 2021-05-24T03:22:43.227 回答
0

就我而言,此问题是由于*.xcworkspace文件损坏所致。它在左侧的 Project Navigator 菜单中显示了我的项目的两个不同版本。

> /dev/null为了验证,我从位于 的 bash 脚本中删除了输出重定向 ( ) Build Phases > Check Pods Manifest.lock,以便它将差异打印到 STDOUT。果然,阅读构建日志,我得到了完全不同的 Podfile.lock 和 Manifest.lock 输出。

为了修复它,我删除了我的*.xcworkspace,然后pod install从我的ios文件夹中再次运行。这会自动重新生成工作区文件。在 XCode 中打开该新文件,瞧,不再出现构建错误。

于 2021-06-14T07:38:32.950 回答
-1

您需要在自定义的 xcconfig 中包含 Pods 生成的 xcconfig 路径。对我来说,这是由于错误配置的 xcconfig 文件造成的。

于 2018-06-07T18:55:37.283 回答