Flutter真机iOS构建失败:Command PhaseScriptExecution返回非零退出码
解决Flutter iOS真机构建报错
Command PhaseScriptExecution failed with a nonzero exit code的方案 1. 校验Xcode命令行工具配置
- 打开Xcode,进入
Xcode > 设置 > 位置,确认命令行工具选择的是当前安装的Xcode版本(不能为空或旧版本)。 - 配置完成后重启终端和Xcode。
2. 清理全链路构建缓存
依次执行以下命令:
flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios && pod install --repo-update cd ..
然后打开Xcode,执行产品 > 清理构建文件夹(快捷键Cmd+Shift+K),再删除~/Library/Developer/Xcode/DerivedData目录下的所有文件。
3. 修复构建阶段脚本配置
根据报错中的警告,两个脚本未指定输出导致构建异常,操作如下:
- 用Xcode打开
ios/Runner.xcworkspace,选中Runner目标,进入构建阶段标签。 - 找到
Run Script阶段:取消勾选基于依赖分析,若不需要每次构建都执行,可勾选仅在安装时运行脚本;也可添加输出文件(例如$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH))。 - 找到
Thin Binary阶段,重复上述操作。
4. 检查签名与证书有效性
- 进入
Runner目标的签名与功能标签,确认团队选择了有效的开发者账号,证书和描述文件未过期。 - 个人开发者需确保真机已添加到开发者账号的设备列表,描述文件包含该设备;可点击
下载手动描述文件按钮重新获取。
5. 确认Flutter与Xcode版本兼容
- 执行
flutter doctor检查环境配置,修复所有提示的问题(如Xcode许可协议未同意、Android SDK缺失等)。 - 确保当前Flutter版本与Xcode版本匹配(最新Flutter通常需要最新版Xcode支持)。
6. 修复系统权限问题
- 进入
系统设置 > 隐私与安全性 > 完全磁盘访问权限,添加终端或你使用的IDE(如VS Code)。 - 权限配置完成后重启终端,再尝试构建。
7. 通过Xcode直接构建查看详细日志
用Xcode打开ios/Runner.xcworkspace,选择真机设备后点击产品 > 运行,Xcode会展示脚本执行失败的具体原因(Flutter输出可能隐藏了关键错误信息)。
内容的提问来源于stack exchange,提问作者eskemender
相关产品推荐
相关产品推荐

