如何自动将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)
- 将Extension的
- 保存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
相关产品推荐
相关产品推荐

