MacBook Pro M1 Pro用Xcode15.2编译Flutter App至iOS17.0.1的iPhone15时遇执行错误
Xcode 15.2 + M1 Pro编译Flutter应用报错解决指南
问题描述
我在搭载M1 Pro芯片的MacBook Pro上,使用Xcode 15.2编译Flutter应用时,反复遇到错误:Command PhaseScriptExecution failed with a nonzero exit code。试过网上能找到的所有方法都没用,想搞清楚这是新版本更新的问题,还是需要调整什么设置?附Podfile截图:
Podfile截图
解决方案
结合Xcode 15的特性和M1芯片的适配情况,给你几个针对性的解决步骤:
修复脚本执行权限
Xcode 15对脚本的执行权限验证更严格,很多这类报错都是脚本无执行权限导致的:- 打开Xcode,进入项目的Build Phases,找到报错对应的PhaseScriptExecution脚本(比如
[CP-User] Generate Specs) - 检查脚本开头是否有
#!/bin/sh或#!/bin/bash,没有的话加上再保存 - 打开终端,执行命令给脚本加权限:
chmod +x ios/Pods/Target Support Files/Pods-<你的项目名>/Pods-<你的项目名>-frameworks.sh(把<你的项目名>换成实际项目名称)
- 打开Xcode,进入项目的Build Phases,找到报错对应的PhaseScriptExecution脚本(比如
开启Rosetta兼容模式
部分旧依赖还没适配M1原生架构,试试给Xcode开Rosetta:- 找到Applications里的Xcode,右键选显示简介,勾选使用Rosetta打开
- 重启Xcode后,依次执行:
flutter clean→flutter pub get→ 进入ios目录执行pod install
调整Podfile配置(对应你的截图)
你的Podfile已经开启了静态框架配置,可以补充以下内容适配Xcode 15:
在Podfile末尾添加这段代码:post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| # 关闭bitcode,避免兼容问题 config.build_settings['ENABLE_BITCODE'] = 'NO' # 适配Xcode 15的链接器变更 config.build_settings['OTHER_LDFLAGS'] = ['-ld64'] end end end保存后重新执行
pod install彻底清理缓存
缓存残留可能导致各种奇怪问题,执行以下命令清空所有相关缓存:rm -rf ~/Library/Developer/Xcode/DerivedData flutter clean cd ios && pod deintegrate && pod install && cd ..
内容的提问来源于stack exchange,提问作者Rogerant Tshibangu
相关产品推荐
相关产品推荐

