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

Azure DevOps及本地打包Flutter iOS项目ARCHIVE FAILED问题求助

Flutter iOS命令行/Azure DevOps打包Archive失败排查方案

核心问题定位

从日志来看,两个关键线索:

  • App Extension的CFBundleVersion与主应用不匹配(警告提示)
  • 最终失败点在Run Script步骤,且Xcode手动打包正常,说明命令行/CI环境与Xcode GUI的执行环境存在差异

1. 修复App Extension版本不一致问题

日志明确显示:

warning: The CFBundleVersion of an app extension ('1') must match that of its containing parent app ('3261').

Xcode GUI打包可能忽略该警告,但命令行/CI环境会触发严格校验导致失败:

  • 打开Runner.xcworkspace,选中Share Extension target
  • 编辑其Info.plist,将CFBundleVersion和CFBundleShortVersionString修改为与主应用Runner target完全一致的值
  • 建议通过Flutter的pubspec.yaml统一管理版本,添加脚本自动同步到Extension的Info.plist,避免手动修改出错

2. 检查Runner Target的Run Script配置

失败提示指向Run custom shell script 'Run Script',这是Flutter自动生成的构建后处理脚本:

  • 进入Runner target的Build Phases,找到Run Script
  • 确认脚本内容为:
    "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
    
  • 命令行打包时确保FLUTTER_ROOT参数路径正确,或改用相对路径避免环境变量冲突
  • 检查脚本的Shell类型为/bin/sh,并确认未错误勾选Run script only when installing(Flutter脚本需要在构建阶段执行)

3. 统一本地与Azure DevOps的工具版本

Azure DevOps曾出现Bitcode版本不兼容错误:

ld: could not reparse object file in bitcode bundle: 'Invalid bitcode version (Producer: '1316.0.21.2.5_0' Reader: '1300.0.29.30_0')'

这说明CI环境的Xcode版本(13.0)与本地(13.1.6)不一致:

  • 在Azure DevOps构建任务中,通过Xcode Version步骤指定与本地一致的Xcode版本(如13.1+)
  • 确保本地和CI环境的Flutter版本完全相同,执行flutter --version确认后,在CI任务中固定该版本

4. 优化命令行打包参数

补充必要参数,对齐Xcode GUI的执行逻辑:

  • 先切换到iOS项目目录再执行命令,避免路径问题:
    cd /Users/admin/Desktop/admin/myapp-client/ios
    /usr/bin/xcodebuild -sdk iphoneos -configuration Release -workspace Runner.xcworkspace -scheme alpha archive -verbose FLUTTER_ROOT=/Users/admin/Desktop/admin/flutter -destination generic/platform=iOS
    
  • 可先执行Flutter预编译,再进行Xcode打包:
    flutter build ios --release --no-codesign
    cd ios && xcodebuild archive ...
    

5. 清理构建缓存

缓存残留可能导致环境不一致:

  • 本地清理命令:
    flutter clean
    cd ios && pod deintegrate && pod install && cd ..
    rm -rf ~/Library/Developer/Xcode/DerivedData
    
  • Azure DevOps中,在构建任务前添加清理步骤,删除DerivedData和Pods目录,重新执行pod install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:18:25