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

Xcode13.4.1归档上传App Store报PhaseScriptExecution打包失败

Xcode 13.4.1 归档项目报PhaseScriptExecution非零退出码解决方案

问题核心特征

  • 模拟器Debug运行完全正常,无已知bug
  • 执行Archive归档准备上传App Store时构建失败,核心报错为Command PhaseScriptExecution failed with a nonzero exit code
  • 失败时执行的脚本路径为Xcode DerivedData目录下ID为9740EEB61CF901F6004384FC的Shell脚本,该脚本为Flutter iOS工程默认的构建阶段脚本

常见诱因

  • 构建脚本缺少可执行权限:Debug模拟器构建会优先读取缓存,不会全量校验脚本权限,归档时做全量构建校验会直接拦截无权限的脚本执行
  • Xcode 13+沙盒规则兼容问题:Xcode 13.4.1默认开启用户脚本沙盒限制,旧版本Flutter/三方插件的构建脚本没有适配沙盒路径规则,访问受限路径时会触发退出
  • 构建缓存污染:DerivedData目录下残留的历史Debug架构缓存和Release真机归档的架构配置冲突
  • 架构裁剪逻辑异常:归档时脚本会对引入的动态库做真机架构裁剪,部分三方脚本没有过滤模拟器架构,裁剪时触发异常

可落地解决步骤(按优先级排序)

  • 全量清理构建缓存
    先关闭Xcode,在终端执行以下命令删除全局Xcode构建缓存:
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    进入项目根目录执行Flutter侧清理:
    flutter clean
    flutter pub get
    cd ios
    pod install --repo-update
    
  • 补全脚本执行权限
    在iOS目录下执行命令给所有构建阶段依赖的脚本加可执行权限:
    chmod +x Flutter/flutter_export_environment.sh
    chmod +x Pods/Target\ Support\ Files/Pods-Runner/Pods-Runner-frameworks.sh
    find Pods -name "*.sh" -type f -exec chmod +x {} \;
    
    重新打开Xcode,选中Runner Target → Build Phases,找到ID为9740EEB61CF901F6004384FC的Run Script条目,勾选Run script only when installing选项,减少非必要阶段的脚本执行,避免环境差异引发的报错
  • 适配Xcode 13沙盒规则
    选中Runner Target → Build Settings,搜索User Script Sandboxing,将Release模式下的配置值从Yes改为No,放开构建脚本的路径访问权限
  • 定位具体脚本错误行
    如果以上步骤都没解决,打开报错对应的Run Script条目,在脚本第一行添加set -x,重新执行归档,Xcode构建日志会打印脚本每一行的执行结果,直接定位到触发非零退出码的具体命令再做针对性修复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:21:35