You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 13.4.1归档报错:Command PhaseScriptExecution失败(非零退出码)

解决Flutter 2.0.2 + Xcode 13.4.1归档时的Command PhaseScriptExecution错误(不升级环境)

针对你在不升级现有环境的前提下,删除功能后归档iOS项目遇到的脚本执行错误,可按以下步骤排查修复:

  • 彻底清理已删除功能的残留

    1. 删除该功能对应的所有Dart代码、iOS原生文件(包括插件类、资源文件等),避免残留代码触发脚本异常
    2. 执行终端命令清理缓存:
      flutter clean
      flutter pub get
      cd ios
      pod deintegrate
      pod install
      
    3. 打开Xcode,执行Product -> Clean Build Folder(快捷键Cmd+Shift+K)清理Xcode本地编译缓存
  • 检查并修复Run Script配置

    1. 在Xcode中进入项目Target的Build Phases,找到报错的Run Script(通常是Flutter自动添加的脚本)
    2. 核对脚本路径是否正确:旧版Flutter的标准脚本路径为"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh",可在终端执行echo $FLUTTER_ROOT确认路径,再在Xcode的Build Settings -> User-Defined中检查FLUTTER_ROOT变量是否匹配
    3. 若脚本包含自定义逻辑,删除与已移除功能相关的代码片段
    4. 在脚本设置中,将Shell改为/bin/sh(部分旧环境下zsh会导致兼容性问题),并取消勾选Run script only when installing(归档时需要执行脚本)
  • 修复权限与沙箱限制

    1. 确保项目目录和Flutter SDK目录无特殊字符,执行终端命令修复权限:
      chmod -R 755 /path/to/your/project
      chmod -R 755 $FLUTTER_ROOT
      
    2. 在Xcode的Build Settings中搜索ENABLE_USER_SCRIPT_SANDBOXING,将其设置为NO(旧版Xcode的沙箱限制可能导致脚本执行失败)
  • 预编译验证

    1. 先在终端执行flutter build ios --release,验证命令行编译是否正常,提前定位错误
    2. 在Xcode中选择Generic iOS Device,执行Product -> Build for -> Archiving,确认编译通过后再进行归档操作
    3. 通过Xcode左侧的Report Navigator(最后一个图标)查看详细错误日志,定位脚本执行失败的具体原因(如命令缺失、权限不足等)
  • 归档上传前的收尾检查

    1. 归档成功后,在Xcode Organizer中验证归档包,确认无已删除功能的残留信息
    2. 检查Info.plist文件,删除与已移除功能相关的权限配置(如相机、定位等),避免App Store审核被拒

内容的提问来源于stack exchange,提问作者zerozuro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:36:16