编译 Ionic 应用程序时未设置 PODS_ROOT 和其他 pod 环境变量

Posted

技术标签:

【中文标题】编译 Ionic 应用程序时未设置 PODS_ROOT 和其他 pod 环境变量【英文标题】:PODS_ROOT and other pods env variables not set when compiling Ionic app 【发布时间】:2018-02-17 00:58:41 【问题描述】:

我已经构建了一个使用 Intercom(第三方扩展)的 Ionic 2 应用程序。对讲机是使用 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] Check 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,两者都是空白的。我可能可以通过自己修改这些路径来解决这个特定错误,但显然其他更基本的东西被破坏了,所以我需要自己解决实际问题。

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

我为运行一些 shell 脚本的 [CP] Copy Pods Resources[CP] Embed Pods Frameworks 提供了额外的构建阶段。我试过改变这些顺序,但没有运气。

我的 Podfile.lock 和 Podfile(无论如何都是自动生成的)看起来都不错:

Pod 文件:

# 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,正在运行 Product > 在 XCode 中清理,重新运行 pod install 手动删除Podfile.lockPods目录,在XCode中运行一个Clean然后重新运行pod install 睡个好觉,第二天早上再试一次!

注意事项:

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

【问题讨论】:

【参考方案1】:

我花了很长时间试图解决这个问题,但一无所获。该应用程序是使用 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。

【讨论】:

非常感谢,我已经研究了 2 天,从未想过要删除该平台。这是唯一对我有用的解决方法。 传奇。在其他地方尝试了几种修复方法,这是唯一有效的方法。有同样的情况,我一开始没有安装 cocoapods。

以上是关于编译 Ionic 应用程序时未设置 PODS_ROOT 和其他 pod 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

打开应用程序并锁定屏幕时未收到 Ionic FCM 推送通知,除非被点击

使用react Context(Ionic-React)时未定义history.push()[重复]

#define 在目标构建设置的“用户定义”部分,在 xcode 编译代码时未定义

发布时未编译调试模式的代码

在 Windows 64 中编译 32 位应用程序时未解析的外部符号

动态设置 scss 变量 angular ionic