升级Xcode 14.2至14.3 Beta后归档失败,报PhaseScriptExecution错误
问题描述
将Xcode从14.2版本升级至14.3 Beta版本后,无法为**Any iOS Device (arm64)**执行归档操作,出现如下错误:
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks mkdir -p /Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/BuildProductsPath/Release_preprod-iphoneos/MaxApp.app/Frameworks Symlinked... rsync --delete -av --filter P .*.?????? --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" "/Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/InstallationBuildProductsLocation/Applications/MaxApp.app/Frameworks" building file list ... rsync: link_stat "/Users/max/Workspace/MaxApp/../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" failed: No such file or directory (2) done sent 29 bytes received 20 bytes 98.00 bytes/sec total size is 0 speedup is 0.00 rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/9e200cfa-7d96-11ed-886f-a23c4f261b56/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9] Command PhaseScriptExecution failed with a nonzero exit code
已尝试以下操作但均未解决问题:
- 删除
[CP] Embed Pods Frameworks脚本(但它会自动重建,问题依旧) - 在模拟器中构建调试,可正常运行
- 删除
.pbxproj文件中的"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;配置
问题原因与解决方案
问题根源
Xcode 14.3 Beta对CocoaPods的构建产物路径逻辑做了调整,旧版CocoaPods生成的Embed Pods Frameworks脚本无法适配新路径,导致找不到指定的framework文件;另外部分老旧Pod没有适配Xcode 14.3的新构建体系,产物生成位置不符合脚本预期。
可行解决办法
更新CocoaPods到适配版本
- 先升级CocoaPods:执行
sudo gem install cocoapods(尽量安装最新正式版,适配Beta的版本也可尝试) - 进入项目目录,执行
pod deintegrate彻底移除现有Pod集成 - 重新执行
pod install,生成适配Xcode 14.3的构建脚本
- 先升级CocoaPods:执行
手动修正Pod构建路径配置
- 打开项目的
Podfile,在末尾添加以下代码,强制统一Pod的产物输出路径:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['BUILD_DIR'] = '$BUILD_DIR' config.build_settings['BUILT_PRODUCTS_DIR'] = '$BUILT_PRODUCTS_DIR' config.build_settings['CONFIGURATION_BUILD_DIR'] = '$CONFIGURATION_BUILD_DIR' end end end - 执行
pod install让配置生效
- 打开项目的
修复特定Pod的适配问题
- 针对报错的
ActionSheetPicker_3_0,检查是否版本过旧,在Podfile中更新版本号后执行pod update ActionSheetPicker_3_0 - 如果该Pod已停止维护,可fork仓库后修改它的Build Settings,确保产物输出路径符合Xcode 14.3的要求
- 针对报错的
彻底清理构建缓存
- 使用
Command + Shift + K清理项目缓存 - 删除DerivedData目录:前往
~/Library/Developer/Xcode/DerivedData,删除对应项目的文件夹 - 重启Xcode后重新尝试归档
- 使用
内容的提问来源于stack exchange,提问作者Maxime Esprit
相关产品推荐
相关产品推荐

