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

能否在构建时动态修改Flutter版本并推送双正式版至App Store Connect?

实现Flutter应用向App Store Connect推送两个同代码正式版本的方案

针对你需要在master分支推送时,自动向App Store Connect上传两个技术完全一致、仅版本号不同的正式生产版本的需求,以下是基于Fastlane、Codemagic的可行方案,同时说明Flavor的适用性:

一、Fastlane 实现方案

Fastlane是最灵活的实现方式,通过编排lane可以轻松完成两次打包上传流程:

  • 编写Fastfile配置:定义一个主lane,内部调用两个子lane分别处理正式版和备份版的打包上传
  • 子lane核心操作:
    1. 用Flutter打包命令指定版本号和构建号:
      # 正式版打包
      flutter build ios --release --build-name=3.5.0 --build-number=100
      # 备份版打包
      flutter build ios --release --build-name=4.0.0 --build-number=101
      
    2. 调用upload_to_app_store action分别上传两个IPA包,注意两个版本的build-number必须唯一,避免App Store Connect校验报错
  • 自动化触发:在GitHub Actions、GitLab CI等工具中配置规则,当master分支推送时自动执行Fastlane的主lane

二、Codemagic 实现方案

Codemagic作为Flutter专属CI/CD工具,有两种实现方式:

  1. 多工作流配置:
    • 创建两个独立的工作流,均设置为master分支推送时触发
    • 分别在两个工作流的「Build arguments」中指定不同的版本号和构建号,比如正式版填--build-name=3.5.0 --build-number=100,备份版填--build-name=4.0.0 --build-number=101
    • 开启「Publish to App Store Connect」选项,选择Production环境即可自动上传
  2. 单工作流多任务:
    • 在单个工作流的脚本步骤中,依次执行两次打包上传命令:
      # 正式版打包上传
      flutter build ios --release --build-name=3.5.0 --build-number=100
      xcrun altool --upload-app --type ios --file build/ios/iphoneos/Runner.ipa --username $APP_STORE_USERNAME --password $APP_STORE_PASSWORD
      
      # 备份版打包上传
      flutter build ios --release --build-name=4.0.0 --build-number=101
      xcrun altool --upload-app --type ios --file build/ios/iphoneos/Runner.ipa --username $APP_STORE_USERNAME --password $APP_STORE_PASSWORD
      
    • 注意提前在Codemagic环境变量中配置好Apple账号的用户名和专用密码

三、Flavor 是否适用?

Flavor的设计初衷是区分同一代码的不同功能变体(如免费/付费版、不同地区版本),通常会搭配不同的bundle ID或配置文件。你的需求是完全相同的代码仅版本号不同,使用Flavor反而会增加不必要的配置复杂度(比如要为两个Flavor维护重复的配置),因此不推荐用Flavor实现该需求。

关键注意点

  • 版本号规则:App Store Connect要求同一bundle ID下的每个构建的build-number必须唯一,所以两次打包的build-number必须递增(如100、101),版本号可以是任意合理的数值(如3.5.0、4.0.0)
  • 代码一致性:确保两次打包使用的是同一分支的最新代码,CI流程中先拉取代码再执行打包操作,避免中间出现代码变更
  • 权限配置:无论是Fastlane还是Codemagic,都需要配置好Apple开发者账号的权限,确保有权限向App Store Connect上传生产版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:03:20