我已经构建了一个使用内部通信(第三方扩展)的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}"
我尝试从上面的脚本中输出PODS_PODFILE_DIR_PATH
PODS_ROOT
中的环境变量STDERROR
和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
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中清理,重新运行pod install
Podfile.lock
和Pods
目录,在XCode中运行Clean,然后重新运行pod install
注意事项:
project.xcworkspace
而不是project.xcodeproj
答案 0 :(得分:6)
我花了很长时间试图解决这个问题并且无处可去。该应用程序是使用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。