Flutter项目无法在Release模式运行及打包,Xcode脚本执行失败求助
问题现象
- Debug模式可在模拟器正常运行
- Release模式运行或打包失败,仅返回模糊报错:
Command PhaseScriptExecution failed with a nonzero exit code,无具体错误信息 - 已尝试删除
Podfile.lock、Pods文件夹、.xcworkspace后重新执行pod install,问题未解决
报错详情:
PhaseScriptExecution Run\ Script /Users/xxx/Library/Developer/Xcode/DerivedData/Runner-dxgaiocdvdjvonbkpwvrsyrlzgza/Build/Intermediates.noindex/Runner.build/Release-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh (in target 'Runner' from project 'Runner')
...
/bin/sh -c /Users/xxx/Library/Developer/Xcode/DerivedData/Runner-dxgaiocdvdjvonbkpwvrsyrlzgza/Build/Intermediates.noindex/Runner.build/Release-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh
Failed to package /Users/xxx/Desktop/WorkSpace/star_fission.
Command PhaseScriptExecution failed with a nonzero exit code
排查与解决步骤
1. 查看完整脚本执行日志
Xcode默认会隐藏脚本执行的详细错误,需手动展开:
- 在Xcode的Build Report中找到失败的
Run Script步骤 - 点击步骤左侧箭头展开完整日志,里面会包含脚本执行时的具体错误(如权限问题、Flutter命令失败、依赖缺失等)
2. 清理项目与依赖缓存
- 执行
flutter clean清理Flutter项目缓存,再执行flutter pub get重新拉取依赖 - 进入iOS目录,执行
pod deintegrate彻底清理Pod依赖,再执行pod install重新安装
3. 验证Run Script配置正确性
打开iOS项目的Runner target → Build Phases → Run Script,确认脚本内容为默认值:
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
- 手动验证脚本可执行性:在终端进入项目iOS目录,执行以下命令查看具体报错:
/bin/sh "$(flutter --print-cache-dir)/../packages/flutter_tools/bin/xcode_backend.sh" build
4. 检查Release模式签名配置
切换到Release模式,检查Runner target → Signing & Capabilities:
- 确认签名证书、Provisioning Profile配置正确
- 验证开发者账号权限正常,证书未过期
5. 排查第三方插件兼容性
部分插件在Release模式下存在兼容性问题:
- 临时移除最近添加的插件,重新打包测试,定位是否为特定插件导致
- 确认所有插件版本与当前Flutter版本兼容,查看插件官方文档或Issue是否有同类问题
6. 清理Xcode DerivedData
手动删除报错中指定的DerivedData目录(如/Users/xxx/Library/Developer/Xcode/DerivedData/Runner-dxgaiocdvdjvonbkpwvrsyrlzgza/),重启Xcode后重新构建
内容的提问来源于stack exchange,提问作者Young

