需求:
一个项目里有多个 Targets,其中一个的更新比较频繁,版本号递增很快,其他几个不经常更新,但是当它们更新的时候需要和更新快的那个版本号保持一致。如果每次都手动修改版本号,有点麻烦,所以需要找一个自动化方法实现多 Targets 版本号控制。
查找资料:
Google 这几个关键词:“xcode general version auto”,找到一篇 Apple 官方文档:
https://developer.apple.com/library/content/qa/qa1827/_index.html
发现 Apple 提供了命令行工具 agvtool 来进行项目版本号控制,而且
“Important: When your app includes multiple targets, agvtool will set the version numbers of all your targets to the same number.(重要:当你的 APP 包含多个 targets 的时候,agvtool 会把所有的 targets 设为同一个版本号)” 刚好符合我的需求。
解决:
agvtool 命令行工具是 Xcode Command Line 的一部分,不需要单独安装。根据官方文档在工程里设置好 Versioning System 等内容后,在终端 cd 到项目目录下,执行如下命令:
Version="1.7.5"
Build="2929"
xcrun agvtool new-marketing-version ${Version}
xcrun agvtool new-version -all ${Build}
成功修改了所有 Targets 的版本号。
最后,把这四行命令添加到项目的自动发布脚本里,每次发布新版本之前自动更新所有 Targets 的版本号,大功告成!