编译Ionic应用时,PODS_ROOT和其他pods环境变量未设置。

9

我已经构建了一个使用Intercom(第三方扩展)的Ionic 2应用程序。 Intercom是使用cocoapods安装的。

编译我的应用程序时,会出现以下错误:

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.

这是由构建阶段生成的 [CP] 检查 Pods Manifest.lock

diff "${PODS_PODFILE_DIR_PATH}/Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [ $? != 0 ] ; then
    # print error to STDERR
    echo "error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation." >&2
    exit 1
fi
# This output is used by Xcode 'outputs' to avoid re-running this script phase.
echo "SUCCESS" > "${SCRIPT_OUTPUT_FILE_0}"

我尝试通过上面脚本中STDERRORecho输出环境变量PODS_PODFILE_DIR_PATHPODS_ROOT,但两者都为空。我可能可以通过自己修改这些路径来解决特定的错误,但显然还有更根本的问题需要修复。

为什么这些变量是空的呢?

我有一些其他的构建阶段,包括[CP] Copy Pods Resources[CP] Embed Pods Frameworks,其中运行了一些shell脚本。我尝试过改变这些顺序,但没有成功。

我的Podfile.lock和Podfile(后者是自动生成的)看起来都很好:

Podfile:

# DO NOT MODIFY -- auto-generated by Apache Cordova
platform :ios, '8.0'
target 'niix' do
    project 'niix.xcodeproj'
    pod 'Intercom', '~> 3.2.2'
end

Podfile.lock:

PODS:
  - Intercom (3.2.12)

DEPENDENCIES:
  - Intercom (~> 3.2.2)

SPEC CHECKSUMS:
  Intercom: 3119e8ebf76d3da425bab717a08067398fcabfe6

PODFILE CHECKSUM: f99283bb8a4e56cb037a02390d2fbc4e76c97db9

COCOAPODS: 1.3.1

执行pod install时没有任何错误,并且我预期的所有文件都存在。

我已经尝试过以下几种方法:

  • 运行pod install(当然)
  • 运行pod deintegrate,在XCode中运行Product > Clean,重新运行pod install
  • 手动删除Podfile.lockPods目录,在XCode中进行清理,然后重新运行pod install
  • 好好睡一晚上,第二天再尝试!

需要注意的事项:

  • 我正在从project.xcworkspace而不是project.xcodeproj中运行
  • 我正在运行最新稳定版本的XCode 8.3.3
  • 我正在运行最新版本的Cocoapods 1.3.1
1个回答

8
我花费了很长时间来尝试解决这个问题,但没有进展。该应用是使用Ionic 2构建的,因此实际源代码存储在其他地方,并构建为本机XCode应用程序。
因此,我决定删除整个XCode目录。.xcodeproj,.xcworkspace,全部删除。然后从Ionic重新构建。
第二次构建时,我发现Pods目录出现了,并且一切都正常。我可以编译和运行,没有任何问题。
我的假设是第一次构建失败是因为我没有安装Cocoapods,因此Ionic在设置时悄悄失败了pod install指令。我猜它执行的操作有点不同于传统设置,这就是为什么我不能随后运行pod install的原因。
因此,简而言之,通过删除iOS项目来解决这个问题:
ionic cordova platform rm ios

重新添加它:
ionic cordova platform add ios

然后进行建设:

ionic cordova run ios --device

但请先确保您的系统已安装Cocoapods。


1
非常感谢,我已经研究了两天,从未想过移除平台。这是唯一有效的解决方法。 - kevLinK
1
传奇。在其他地方尝试了几种修复方法,但这是唯一有效的方法。我也遇到了同样的情况,起初没有安装CocoaPods。 - velval

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接