Flutter iOS通过Xcode构建/归档失败,但终端运行正常
Flutter iOS Xcode运行/归档错误解决方案
针对你遇到的open flutter/packages/integration_test/ios/Classes/FLTIntegrationTestRunner.h: Operation not permitted和Command PhaseScriptExecution failed with a nonzero exit code错误,结合你的环境(Xcode14.3.1、Flutter3.10.5),可以尝试以下解决步骤:
移除无用的Integration Test依赖
如果你没有使用integration_test功能,直接清理相关配置:- 打开Xcode的Runner项目,删除
ios/Runner目录下的FLTIntegrationTestRunner相关文件 - 从
pubspec.yaml中删除integration_test依赖项,执行flutter pub get - 执行
flutter clean,然后重启Xcode并清理Xcode缓存(Command+Shift+K)
- 打开Xcode的Runner项目,删除
修复文件权限问题
终端中执行以下命令修复Flutter SDK内相关文件的权限:# 定位到Flutter SDK的integration_test目录 cd $(dirname $(which flutter))/../packages/integration_test/ios/Classes # 修改文件权限 chmod 644 FLTIntegrationTestRunner.h FLTIntegrationTestRunner.m # 可选:递归修复整个Flutter SDK的权限 sudo chmod -R 755 $(dirname $(which flutter))/../调整Xcode构建脚本配置
- 在Xcode中选中Runner目标,进入
Build Phases标签页 - 找到
Run Script阶段,确保脚本内容为:"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build - 勾选
Run script only when installing选项,避免调试阶段的脚本冲突 - 如果仍报错,尝试在脚本开头添加
set -e,强制脚本遇到错误即终止:set -e; "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
- 在Xcode中选中Runner目标,进入
彻底清理缓存并重建
- 执行
flutter clean清空Flutter构建缓存 - 进入ios目录,删除
Pods文件夹和Podfile.lock,执行pod install - 清空Xcode的Derived Data:打开Xcode -> Settings -> Locations -> Derived Data,点击箭头打开文件夹后删除所有内容
- 重新用Xcode打开项目,尝试运行或归档
- 执行
版本兼容性适配
Flutter 3.10.5与Xcode14.3存在部分兼容性问题,可以尝试:- 升级Flutter到3.10.6及以上版本(官方修复了Xcode14.3的脚本执行问题)
- 或者降级Xcode到14.2版本,避开兼容性冲突
内容的提问来源于stack exchange,提问作者user2836291
相关产品推荐
相关产品推荐

