错误:使用cocoapods安装RestKit后,"沙箱与Podfile.lock ...不同步"

Has*_*jmi 212 cocoapods restkit-0.20

用cocopods安装RestKit后,我遇到了一个奇怪的问题.在使用cocopods为我的项目解析RestKit依赖项并尝试构建它之后,我遇到了这个错误:

  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 Code Online (Sandbox Code Playgroud)

我搜索但找不到任何明确的解决方案.

这里有一些镜头: 在此输入图像描述

在此输入图像描述

  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 Code Online (Sandbox Code Playgroud)

小智 290

我能够通过更新CocoaPods来解决这个问题.

一,项目清理

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

II.更新CocoaPods

  1. 启动终端并转到项目目录.
  2. 使用该命令更新CocoaPods pod install

  • @ Valery Pavlov这些步骤有效,但在一个成功的项目清理后,构建立即失败,同样的3个错误我似乎无法摆脱下面.我尝试完全删除所有cocoapods,重新安装,更新,使用xcode重启等完成所有这些操作.终端中的所有这些都成功执行但构建仍然失败.有进一步的想法?错误:diff:/../Podfile.lock:没有这样的文件或目录diff:/Manifest.lock:没有这样的文件或目录错误:沙箱与Podfile.lock不同步.运行"pod install"或更新CocoaPods安装. (17认同)
  • 关于I.3 - 您的意思是"构建阶段>链接二进制与库"部分吗? (15认同)
  • 工作就像一个魅力,你可能想更新你的答案哟说运行命令pod安装 (2认同)

com*_*m1x 94

经过多次尝试,我设法解决了这个问题.变量$ {PODS_ROOT}未设置,我在下面进行操作.转到Build Phases - > Check Pods Manifest.lock并替换

diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
Run Code Online (Sandbox Code Playgroud)

diff "${SRCROOT}/Podfile.lock" "${SRCROOT}/Pods/Manifest.lock" > /dev/null
Run Code Online (Sandbox Code Playgroud)

它帮助到我.

  • 未设置$ PODS_ROOT的原因主要是因为cocoapods生成的.xcconfig文件未应用于构建目标. (2认同)

100*_*ams 43

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

target 'myTarget' do
pod 'great-stuff', '~> 4.0'  // you deleted this last pod
end
Run Code Online (Sandbox Code Playgroud)

您需要从Xcode目标构建阶段手动删除这些构建步骤:

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

运行时,Cocoapods(当前稳定版本0.37.2)不执行此清理pod install.


Tee*_*aul 21

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

有一个很好的GitHub存储库,可以完全删除项目中的pod.

只需保留PodFile的备份并运行以下命令即可.

  • gem install cocoapods-deintegrate
  • 宝石安装cocoapods-clean
  • 转到项目目录并运行pod deintegrate
  • 再次运行pod清理
  • 运行pod安装

清洁并运行.


Edd*_*die 18

我一直在搜索几个小时,发现以下解决方案:

就我而言,方法1可行。

方法1:

  1. 选择目标>转到构建短语 >单击使用库链接二进制文件>删除所有libPods.a文件
  2. 打开终端>转到您的项目>运行:

     pod install
    
    Run Code Online (Sandbox Code Playgroud)
  3. 清理并建设项目

参考1

方法2:

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

    pod deintegrate --verbose    
    pod install --verbose
    
    Run Code Online (Sandbox Code Playgroud)

参考2

方法3:

  1. 选择目标>转到“ 构建设置” >单击“ +”号
  2. 添加2个用户定义的设置:[左侧=右侧]

    PODS_ROOT = ${SRCROOT}/Pods
    
    Run Code Online (Sandbox Code Playgroud)

    PODS_PODFILE_DIR_PATH = ${SRCROOT}/
    
    Run Code Online (Sandbox Code Playgroud)

参考3

  • 我尝试了所有其他解决方案,但没有任何效果。方法3对我有用。 (2认同)
  • 方法2对我有用。非常感谢。 (2认同)

avi*_*hic 12

更改目标名称后

我的问题是带有旧目标名称的xcconfig.

  • 去项目文件 - >信息 - >配置
  • 删除旧的xcconfig(Debug和Release)
  • pod安装

它将更新为新的.

此外,如果您丢失了.h文件,那就是原因(pods标题搜索路径在这些xcconfig中)


Hon*_*ney 11

首先,您必须了解它Podfile.lock是什么,然后了解它Manifest.lock是什么以及它的用途。

\n

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

\n

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

\n
    \n
  • 假设您下载了团队\xe2\x80\x99s 代码。在项目的根目录中,您只有PodfilePodfile.lock,并且该Pods目录未被提交。
  • \n
  • 然后你就可以pod install创建Pods目录了。每个 pods\xe2\x80\x99 版本的快照应与 Podfile.lock 中所有 pod 的版本匹配。
  • \n
  • CocoaPods 具有适当的安全检查,以确保版本匹配
  • \n
\n

这就是Manifest.lock发挥作用的地方。Manifest.lock是否已创建本地计算机的锁。它必须与Podfile.lock存储库中最后一次提交(导致 pod 发生更改)生成的内容相匹配。如果不匹配,就会出现问题。

\n

关于Manifest.lock文件是什么的文档:

\n
  #     Manifest.lock: A file contained in the Pods folder that keeps track of\n  #     the pods installed in the local machine. This files is used once the\n  #     exact versions of the Pods has been computed to detect if that version\n  #     is already installed. This file is not intended to be kept under source\n  #     control and is a copy of the Podfile.lock.\n
Run Code Online (Sandbox Code Playgroud)\n

老实说,我只能想到一种情况,其中Manifest.lockPodfile.lock会不同步:

\n

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

\n

这是否只是为了如果:

\n
    \n
  1. 您和您的团队不提交\xe2\x80\x99t/Pods目录
  2. \n
  3. 您的or中存在合并冲突,但 \xe2\x80\x99 没有意识到这一点。或者你还没有同时承诺和PodfilePodfile.lockPodfilePodfile.lock
  4. \n
  5. 然后假设 Xcode 不会\xe2\x80\x99t 处理 and PodfilePodfile.lock那么你的项目自然可以成功构建。
  6. \n
  7. 但是,如果您检查目标的构建阶段,您会看到以下内容
  8. \n
\n

在此输入图像描述

\n

该脚本记录在此处

\n
#     Adds a shell script build phase responsible for checking if the Pods\n#     locked in the Pods/Manifest.lock file are in sync with the Pods defined\n#     in the Podfile.lock.\n#     \n#     @note   The build phase is appended to the front because to fail fast.\n#     \n#     @return [void]\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
\n

观看有关锁定文件的视频也很有帮助, CocoaPods 文档介绍了如何以不同的方式使用锁定文件来进行 pod 安装和 pod 更新,最后看看如何更详细地使用所有逻辑\n这个关于校验和的艺术博客。值得注意的是,单个空格将创建一个新的校验和,并且可能会使事情不同步。

\n


gia*_*pnh 8

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


小智 8

你能试试这个吗:

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


Dav*_*vid 7

如果您看到类似以下的错误:

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

然后您的项目中的Cocoapods存在问题。有时,cocoapods可能会不同步,因此您需要重新启动cocoapods。您应该可以通过以下方法解决此错误:

  1. 删除项目文件夹中的Podfile.lock文件
  2. 删除项目文件夹中的Pods文件夹
  3. 在项目文件夹中执行“ pod安装”
  4. 在Xcode中执行“清理”
  5. 重建项目

  • 太感谢了。你让我今天一整天都感觉很好。在我的 Flutter 项目中没有其他的工作。 (3认同)

小智 7

  • 转到构建阶段 -> 检查 Pods Manifest.lock
  • 代替
${PODS_ROOT}/Manifest.lock
Run Code Online (Sandbox Code Playgroud)

和:

${SRCROOT}/Podfile.lock" "${SRCROOT}/Pods/Manifest.lock
Run Code Online (Sandbox Code Playgroud)

签入图像:

在此处输入图片说明


tyo*_*213 6

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

ios平台目标


Shy*_*mov 5

在我的情况下,我在集成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
Run Code Online (Sandbox Code Playgroud)

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


Sir*_*lam 5

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

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