编译Ionic应用程序时未设置PODS_ROOT和其他pods env变量

Mik*_*ike 6 xcode ios cocoapods intercom intercom-ios

我已经构建了一个使用内部通信(第三方扩展)的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.
Run Code Online (Sandbox Code Playgroud)

这是由构建阶段生成的[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}"
Run Code Online (Sandbox Code Playgroud)

我已经尝试输出环境变量,PODS_PODFILE_DIR_PATHPODS_ROOTSTDERROR echo上面的脚本中,两者都是空白的.我可以通过自己修改这些路径来解决这个特定的错误,但显然其他更基本的东西被打破了,所以我需要修复实际问题本身.

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

我有额外的构建阶段,[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
Run Code Online (Sandbox Code Playgroud)

Podfile.lock:

PODS:
  - Intercom (3.2.12)

DEPENDENCIES:
  - Intercom (~> 3.2.2)

SPEC CHECKSUMS:
  Intercom: 3119e8ebf76d3da425bab717a08067398fcabfe6

PODFILE CHECKSUM: f99283bb8a4e56cb037a02390d2fbc4e76c97db9

COCOAPODS: 1.3.1
Run Code Online (Sandbox Code Playgroud)

运行时没有错误pod install,我期望的所有文件都存在.

我已经尝试过的事情:

  • 跑步pod install(当然)
  • 运行pod deintegrate,运行Product> Clean in XCode,重新运行pod install
  • 手动删除Podfile.lockPods目录,在XCode中运行Clean然后重新运行pod install
  • 一个美好的夜晚睡觉和第二天早上的另一次尝试!

注意事项:

  • 我从运行project.xcworkspaceproject.xcodeproj
  • 我正在运行最新的稳定版XCode 8.3.3
  • 我正在运行最新版本的Cocoapods 1.3.1

Mik*_*ike 7

我花了很长时间试图解决这个问题而无处可去.该应用程序是使用Ionic 2构建的,因此实际的源代码存储在其他地方并构建到本机XCode应用程序中.

因此我决定删除整个XCode目录. .xcodeproj,.xcworkspace应有尽有.然后我从Ionic重建.

在第二个版本中,我看到Pods目录就在那里,一切都应该如此.我可以第一次编译和运行,没有任何问题.

我的假设是第一次构建失败,因为我没有安装Cocoapods,所以Ionic默默无法pod install在设置时运行命令.我想它与传统的设置有点不同,这就是为什么我不能只是pod install事后运行.

简而言之,这是通过删除iOS项目来解决的:

ionic cordova platform rm ios
Run Code Online (Sandbox Code Playgroud)

并重新添加它:

ionic cordova platform add ios
Run Code Online (Sandbox Code Playgroud)

然后建立:

ionic cordova run ios --device
Run Code Online (Sandbox Code Playgroud)

但请确保您已经在系统上安装了Cocoapods.