Xcode 13.1归档App时出现Command PhaseScriptExecution非零退出码错误
解决Xcode 13.1归档Flutter App时Command PhaseScriptExecution非零退出码错误
报错核心是**readlink: illegal option -- f**,原因是macOS系统默认的readlink工具不支持GNU版本的-f参数,而CocoaPods生成的Embed Pods Frameworks脚本中使用了该参数,导致脚本执行失败。以下是具体解决方法:
方案一:替换脚本中的readlink为greadlink
- 先通过Homebrew安装GNU版本的readlink:
brew install coreutils - 找到报错提示中的Shell脚本文件(路径示例:
/Users/sereyvongthorn/Library/Developer/Xcode/DerivedData/Runner-corqdinyzjasmidrvlqssijkobia/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-16A3BD1D6245A374368C41CD.sh) - 打开该脚本,将所有的
readlink替换为greadlink - 重新执行归档操作
方案二:修改CocoaPods脚本模板(一劳永逸)
- 找到CocoaPods的脚本模板文件,路径一般为:
/Library/Ruby/Gems/2.6.0/gems/cocoapods-<你的版本号>/lib/cocoapods/targets/script_phases/templates/embed_frameworks_script.sh.erb - 打开模板文件,找到包含
readlink -f的行(类似source="$(readlink -f "${source}")"),替换为macOS兼容的写法,比如用Python实现路径解析:source="$(python3 -c "import os; print(os.path.realpath('${source}'))")" - 在项目的ios目录下执行
pod install更新脚本,之后重新归档
方案三:升级CocoaPods到修复版本
部分新版本的CocoaPods已经修复了macOS readlink的兼容问题,执行以下命令升级:
gem install cocoapods cd ios && pod install
升级完成后重新尝试归档
内容的提问来源于stack exchange,提问作者Sereyvong Thorn
相关产品推荐
相关产品推荐

