Flutter项目真机运行时Xcode报Command PhaseScriptExecution错误
Flutter真机运行报错:
Command PhaseScriptExecution failed with a nonzero exit code 修复方案 这个错误是Flutter iOS真机部署时的常见问题,结合你已做的操作,以下是核心成因和针对性修复步骤:
常见成因
- 签名/证书配置不完整:虽然选择了团队,但设备未纳入开发者账号、证书过期或签名目标配置不一致
- Flutter构建脚本权限不足:关键Shell脚本缺少可执行权限
- Xcode本地缓存残留:
flutter clean无法清理Xcode的DerivedData缓存 - 项目目录权限受限:项目所在文件夹读写权限不足导致脚本执行失败
- Pod依赖构建脚本异常:部分第三方Pod的预构建脚本出错
修复步骤
1. 彻底检查签名与开发者账号配置
- 打开Xcode的
Signing & Capabilities页面,确保Automatically manage signing已勾选,团队选择正确的开发者账号 - 登录Apple开发者后台,确认当前测试设备已添加到
Devices列表(如果没添加,Xcode会提示"设备未注册",直接按提示添加即可) - 检查
Runnertarget和Fluttertarget的签名配置完全一致,避免一个自动管理、一个手动配置的矛盾情况 - 如果证书有异常,删除Xcode本地证书(
Xcode -> Settings -> Accounts -> 选中账号 -> Manage Certificates),让Xcode自动重新生成
2. 修复构建脚本权限
进入项目的ios目录,在终端执行以下命令,给关键脚本添加可执行权限:
chmod +x Pods/Target\ Support\ Files/Pods-Runner/Pods-Runner-frameworks.sh chmod +x Flutter/flutter_export_environment.sh
3. 清理Xcode本地缓存
关闭Xcode,执行命令删除DerivedData缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData
重新打开Xcode后,按Cmd+Shift+K执行Clean Build Folder
4. 检查项目目录权限
- 确保项目不要放在系统受保护的目录(如
/System、/Applications),建议放在~/Documents或用户目录下 - 右键点击项目文件夹,选择
显示简介,确认当前用户拥有读与写权限,权限不足的话点击锁图标解锁后修改
5. 重新初始化Pod依赖
进入ios目录,执行以下命令彻底重置Pod:
rm Podfile.lock rm -rf Pods pod install
如果是M1/M2芯片的Mac,需用Rosetta执行:
arch -x86_64 pod install
6. 确认Xcode与Flutter版本兼容
- 检查
flutter doctor输出的Xcode版本,确保和当前Flutter版本匹配(比如Flutter 3.10+需要Xcode 14.3及以上) - 如果版本不兼容,升级Xcode到最新稳定版(注意备份项目)
内容的提问来源于stack exchange,提问作者Berk_Wiro
相关产品推荐
相关产品推荐

