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

如何自动将iOS Today Extension包版本同步为Flutter的FLUTTER_BUILD_NUMBER

Flutter iOS原生Extension与主App版本自动同步方案

可以实现自动化同步,以下是两种常用的落地方法:

方案1:通过Xcode配置共享版本号(推荐,无额外脚本)

  • 打开iOS项目的Runner.xcworkspace,选中Xcode左侧的项目根节点,选择「Info」选项卡
  • 在「Configurations」下,对Debug、Profile、Release三个配置,分别为Extension目标设置Info.plist取值绑定:
    • 将Extension的CFBundleShortVersionString(对外显示版本号)取值设为$(FLUTTER_BUILD_NAME)
    • 将Extension的CFBundleVersion(内部构建号)取值设为$(FLUTTER_BUILD_NUMBER)
  • 保存Xcode配置后,后续修改pubspec.yaml的版本号,构建时Extension会自动同步读取主Runner的Flutter版本变量

方案2:通过构建前置脚本批量同步

如果项目包含多个Extension目标,可以通过统一脚本批量处理:

  • 打开Runner目标的「Build Phases」选项卡,点击左上角+号选择「New Run Script Phase」
  • 把新增的脚本阶段拖拽到「Compile Sources」阶段之前,输入以下脚本内容:
# 读取pubspec.yaml中的版本信息
VERSION=$(grep '^version: ' ../pubspec.yaml | sed 's/version: //' | cut -d '+' -f 1)
BUILD_NUMBER=$(grep '^version: ' ../pubspec.yaml | sed 's/version: //' | cut -d '+' -f 2)

# 替换Today Extension的Info.plist版本,注意修改为你的Extension的Info.plist实际路径
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "TodayExtension/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "TodayExtension/Info.plist"

注意:两种方案配置完成后,所有版本变更仅需修改pubspec.yaml的version字段即可,无需再手动修改Extension的版本配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:04