Xcode 14.2构建报错:Command PhaseScriptExecution失败及Pod依赖冲突
解决Flutter项目iOS端Command PhaseScriptExecution非零退出码及依赖部署版本冲突问题
问题根源
你遇到的Command PhaseScriptExecution失败,本质是依赖版本与项目最低部署目标不兼容:flutter_facebook_auth 5.0.4依赖的FBSDKLoginKit ~>15.1.0要求更高的iOS最低部署版本(通常为iOS 12.0或以上),但你调试的iPhone 5s最高仅支持iOS 12.5.7,且项目当前的部署目标可能低于依赖要求,导致pod install报错,进而触发编译阶段的脚本执行失败。删除Run Script内容无法解决依赖冲突的核心问题,反而会破坏Flutter的编译流程。
解决方案
根据是否需要保留iPhone 5s的支持,可选择以下两种方案:
方案1:升级项目最低部署目标(放弃iPhone 5s支持)
- 打开iOS目录下的
Runner.xcworkspace - 选中
RunnerTarget →Build Settings→ 找到iOS Deployment Target,将版本改为12.0或更高(匹配FBSDKLoginKit的要求) - 编辑iOS目录下的
Podfile,在顶部添加:platform :ios, '12.0' - 执行命令清理并重新安装依赖:
flutter clean cd ios pod install cd .. flutter pub get
方案2:降级flutter_facebook_auth版本(保留iPhone 5s支持)
iPhone 5s最高支持iOS 12.5,需选择兼容该版本的flutter_facebook_auth版本(如4.x系列,其依赖的FBSDK版本最低支持iOS 10.0):
- 修改项目根目录的
pubspec.yaml,将flutter_facebook_auth的版本改为兼容版本,例如:dependencies: flutter_facebook_auth: ^4.4.1 - 执行命令更新依赖:
flutter pub get cd ios pod install
额外修复步骤(若修改后仍有脚本执行错误)
- 恢复Run Script内容:打开Xcode的
RunnerTarget →Build Phases→Run Script,确保脚本内容为:
以及"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" buildEmbed Frameworks阶段的脚本:"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed - 清理Xcode缓存:Xcode菜单 →
Product→Clean Build Folder,再重新编译运行。
内容的提问来源于stack exchange,提问作者Gunjon Roy
相关产品推荐
相关产品推荐

