沙盒与 Podfile.lock-ios 不同步

The sandbox is not in sync with the Podfile.lock-ios

在尝试 google 的多个答案后,我遇到了以下错误。

PhaseScriptExecution Check\ Pods\ Manifest.lock /Users/apple/Library/Developer/Xcode/DerivedData/Build/Intermediates/FoodSpot.build/Debug-
    iphonesimulator/FoodSpotTests.build/Script-36819C3C1B6A30F50091382D.sh
        cd "/Users/apple/Downloads/FoodSpot 2"
        /bin/sh -c /Users/apple/Library/Developer/Xcode/DerivedData/Build/Intermediates/FoodSpot.build/Debug-iphonesimulator/FoodSpotTests.build/Script-36819C3C1B6A30F50091382D.sh

    diff: /../Podfile.lock: No such file or directory
    diff: /Manifest.lock: No such file or directory
    error: The sandbox is not in sync with the Podfile.lock. 
    Run 'pod   install' or update your CocoaPods installation.

更新安装了很多次,都没有用

Run 'pod install' or update your CocoaPods installation.

错误本身就有答案!

错误消息指出您应该更新 CocoaPods 安装。

您可以删除框架和库中的 libPods 并使用 pod install.

更新 Cocoapods

还有:

清理并构建项目

SO 引用:

CocoaPods Errors on Project Build

Error:"The sandbox is not in sync with the Podfile.lock..." after installing RestKit with cocoapods

对我来说,它在以下情况后起作用:

pod deintegrate --verbose    
pod install --verbose

删除派生数据对我有用。我通过进入取景器本身删除了。

确保在 Xcode Project 构建步骤之前添加 "pod install" 命令行构建步骤。

错误来自 Xcode 项目目标中的构建阶段 运行 脚本,它无法找到 Podfile.lock。此文件由 CocoaPods 生成,必须在您的 TeamCity 项目的构建步骤中安装。

我的构建步骤如下:

  1. 命令行:bundle install --path .bundle(使用 Gemfile 在项目本地安装 cocoapods)。
  2. 命令行:bundle exec pod install --verbose(使用Podfile
  3. 命令行:carthage update --platform iOS(使用Cartfile
  4. Xcode 项目
  5. 构建存档的命令行
  6. 上传构建的命令行

希望这对您有所帮助。

如下所示在 podfile 中进行更改:

较旧的 pod 文件

target :TargetName, :exclusive => true do

已更改 pod 文件

目标'TargetName'做

就我而言,错误发生在 _Tests 目标上。我不需要 _Tests 目标,所以我删除了它。这解决了错误。

我很确定您已经打开了您尝试安装新项目的项目工作区 Pods。所以试试下面的方法(对我来说这很有效):

  1. 清理项目
  2. 关闭项目
  3. 运行 pod install
  4. 打开项目并再次尝试重新构建它

问题可能已经解决。

在我的例子中,我在整合其他目标后遇到了同样的错误。为了解决问题,我需要在 Podfile 中添加两个目标:

abstract_target 'myApp' do
   use_frameworks!

   pod 'Alamofire', '~> 3.0'
   pod 'SwiftyJSON'

    target 'myAppOtherTarget'
end

如果 cocoa pods 没有正确安装或卸载,就会发生这种情况

如果要安装cocoapods运行

pod install

如果你想卸载 cocoa pods 然后 运行 命令

pod deintegrate

我遇到了同样的问题。结果 Manifest.lock 上的 cocoapods 版本比我 mac 上的要高。我必须执行 'sudo gem install cocoapods',以使 cocoapods 的版本达到 Manifest.lock 文件中指定的版本。这解决了问题,我在构建项目时没有出现任何错误。

我现在面临同样的问题,并在导航到终端中的项目位置后使用此命令修复。

pod install --repo-update

只需转到构建阶段并单击 [CP] 检查 Pods Manifest.lock。

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

PODS_PODFILE_DIR_PATH 和 POD_ROOT 都应该在构建设置中的用户定义中定义。 POD_ROOT 应该有 Manifext.lock 文件的正确路径并且 POD_PODFILE_DIR_PATH 应该有 Podfile.lock

的正确路径

因此在构建设置中添加以下内容。

PODS_ROOT ---- ${SRCROOT}/Pods

PODS_PODFILE_DIR_PATH ---- ${SRCROOT}

对我来说,原因是构建设置中的用户定义变量错误!

调查此问题,构建阶段尝试区分 2 个文件。

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

只是因为缺少 PODS_PODFILE_DIR_PATH 和 PODS_ROOT 变量,假设它们为 "" 所以 ${PODS_PODFILE_DIR_PATH}/Podfile.lock 指向 /Podfile.lock另一个也一样。
所以它失败了

diff /Podfile.lock and /Manifest.lock

我通过在构建设置中添加 2 个用户定义的设置来解决这个问题

PODS_ROOT = ${SRCROOT}/Pods
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

经过几个小时的搜索,这是唯一对我有用的解决方案

如果您碰巧像我一样移动 Podfile 并遇到这个问题,下面讨论的解决方案可能会有所帮助 -

  1. 删除以下所有内容 - Pods 文件夹、xcworkspace 文件、podlock 文件(跳过那些不能用于子文件夹的文件)
  2. 从构建阶段选项卡中删除所有包含 [cp] 的步骤
  3. 对您工作区中的所有子项目重复步骤 1 和 2
  4. 打开工作区,进入每个项目并删除 pods 的框架,然后从每个项目
  5. 中删除 pods 文件夹
  6. 关闭工作区
  7. 运行 pod 安装

您现在应该能够打开、构建和运行项目

我通过在构建设置中添加 2 个用户定义的设置来解决这个问题

PODS_ROOT = ${SRCROOT}/Pods
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.

问题是 Podfile.lock 和 Manifest.lock 无法在您的目标构建阶段通过检查 Pods Manifest.lock 脚本找到。

这通常是由于 PODS_PODFILE_DIR_PATH 和 PODS_ROOT 变量未定义引起的。

转到构建设置选项卡来定义它们。

您需要在您的项目中查找 Podfile.lock 和 Manifest.lock 并获取它们目录的完整路径。目录路径将是您用于 PODS_PODFILE_DIR_PATH 和 PODS_ROOT.

的值

我搜索了几个小时,找到了如下解决方案:

就我而言,方法 3 有效。

方法一:

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

     pod install
    
  3. 清理并构建项目

方法二:

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

    pod deintegrate --verbose    
    pod install --verbose
    

方法三:

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

    PODS_ROOT = ${SRCROOT}/Pods
    

    PODS_PODFILE_DIR_PATH = ${SRCROOT}/
    

我刚刚通过更新 Cocoapod 修复了它,因为在错误之前有日志警告显示我们需要升级我们的 cocoapods 因为当前 cocoapod 版本不支持 pod 文件,所以清理项目,升级cocoapod 然后安装 pod.

1. Clean project
2. sudo gem install cocoapods/gem install cocoapods
3. pod install (optional if your project still shows error)

注意:我在 iOS 平台

的 flutter 应用程序中发现了这个错误

我认为您正在尝试在当前项目中使用旧项目 pod 文件夹,您必须复制当前项目的 Manifest.lock 文件并将该文件替换到您添加的旧项目的 pod 文件夹中。 Manifest.lock 文件位置 YourProject->Pods->Manifest.lock 希望这是有帮助的。对我有用!

请检查 Top Sites - Sandbox Sync iOS 以获得更多说明。我通过从

更改文件路径解决了这个问题

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

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

Xocde -> "Open Your Project" -> "Select Your Project" -> "Select Your Target" -> Build Phases -> Check Pods Manifest.lock

如果没有,请尝试按上述方法更改路径,以及 Legacy Build System。更改构建系统 Xcode -> File -> Workspace Settings -> Build System -> Legacy Build System

我不想这么说,但我只是删除了 pods/ 或没有将它们包含在项目中并构建了它。我不知道这是否会对项目产生长期影响。

目前这是我的 ionic5 的 .sh 构建脚本 ios。以后可能会变。

# BUILDING FOR IOS

##################################
#
#     MAKE SURE YOU UNPLUG ALL DEVICES!!!!!
#
##################################

 
ionic cordova platform remove ios
ionic cordova prepare ios 
ionic cordova platform add ios
ionic cordova build ios --prod --release --buildFlag="-UseModernBuildSystem=0" --verbose
cd platforms
cd ios
open "MyApp.xcworkspace/"
cd ..
cd ..

它一直困扰着我的项目,所以我想我应该把它们去掉。到目前为止我还没有部署这个项目......所以谁知道呢。 BigSur 11.1,XCode 12.4 (12D4e)

编辑

原来我的问题是由于 Manifest.lock 末尾的新行在 PodFile.lock 文件中不存在。 运行 两个文件的差异突出了问题。

在 PodFile.lock 文件的末尾添加一个新行解决了它。

原答案

None 的答案对我有用,所以我刚刚检查了在构建中找到的“[CP] Check Pods Manifest.lock”下的“For install builds only”阶段选项卡。

我相信这个设置意味着它只会 运行 在存档时进行检查,允许我继续开发,因为我不需要在我的机器上存档应用程序。

谨慎使用,因为它可能不是适合所有人的最佳解决方案。