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

如何实现macos/Runner.xcworkspace版本与构建号自动匹配pubspec.yaml?

自动同步Flutter pubspec.yaml与macOS Runner版本号、构建号的方法

方法1:构建时通过Flutter命令自动传入参数

直接在构建macOS应用时,从pubspec.yaml提取版本号和构建号,通过命令行参数传递给构建命令:

flutter build macos --build-name=$(grep 'version:' pubspec.yaml | cut -d ' ' -f 2 | cut -d '+' -f 1) --build-number=$(grep 'version:' pubspec.yaml | cut -d '+' -f 2)

这个命令会自动读取pubspec.yaml中version字段的内容(格式如x.y.z+b),拆分出版本号(x.y.z)和构建号(b),同步到macOS项目的配置中。

方法2:自定义Shell脚本快速同步

如果需要频繁手动同步,可在项目根目录创建一个同步脚本:

  1. 创建sync_version.sh文件,写入以下内容:
#!/bin/bash
# 提取pubspec.yaml中的版本信息
VERSION_NAME=$(grep 'version:' pubspec.yaml | awk -F ' ' '{print $2}' | awk -F '+' '{print $1}')
VERSION_CODE=$(grep 'version:' pubspec.yaml | awk -F '+' '{print $2}')

# 同步到macOS项目的Info.plist
PLIST_PATH="macos/Runner/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION_NAME" $PLIST_PATH
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $VERSION_CODE" $PLIST_PATH

echo "已同步版本号: $VERSION_NAME,构建号: $VERSION_CODE 到macOS项目"
  1. 给脚本添加执行权限:
chmod +x sync_version.sh
  1. 运行脚本完成同步:
./sync_version.sh

方法3:Xcode构建时自动触发同步

配置Xcode在每次构建前自动同步版本信息:

  1. 打开macos/Runner.xcworkspace,选中Runner target,进入「Build Phases」标签页
  2. 点击左上角「+」按钮,选择「New Run Script Phase」
  3. 在脚本输入框中添加以下内容:
# 从pubspec.yaml提取版本信息
VERSION_NAME=$(grep 'version:' "${SRCROOT}/../pubspec.yaml" | awk -F ' ' '{print $2}' | awk -F '+' '{print $1}')
VERSION_CODE=$(grep 'version:' "${SRCROOT}/../pubspec.yaml" | awk -F '+' '{print $2}')

# 更新Info.plist中的版本号和构建号
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION_NAME" "${SRCROOT}/Runner/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $VERSION_CODE" "${SRCROOT}/Runner/Info.plist"
  1. 将这个Run Script Phase拖动到「Dependencies」阶段之后,确保构建前先执行同步操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:32:12