轻松控制多Target的Xcode项目的版本号
轻松控制多Target的Xcode项目的版本号
当在做原生 Apple 平台的开发的时候,Xcode 是我们必须要接触的工具,如果项目的 Target 比较少还好,我们可以直接在 Xcode 中的 Version 和 Build 中直接改变版本号。但如果项目的 Target 较多时,每次更新版本都要设置多个 Target 的版本号,这就比较麻烦。
还好,我们可以给 Xcode 项目添加构建配置文件,在每次构建时就从配置文件中读取版本号。这样每次更新版本就只需要在一个文件中更改,Xcode 会自动应用的所有 Target 的 Version 和 Build 中。
在 Apple 的文档中“详细”说明了怎么给项目添加构建配置文件,但是奈何 Apple 的文档起始一点都不详细😂,往往会遗漏掉最重要的步骤!
1. 创建 .xcconfig 配置文件
首先这个文件我们是希望所有的 Target 都使用,所以要在项目的根目录创建,这里选择项目的根目录。
然后按下键盘快捷键
⌘ + N来创建新文件在新文件的创建模版中,我们搜索
config,然后再搜索结果中选择Configuration Settings File,名字我建议取名为Build,因为是和编译相关,当然了您可以创建自己喜欢的名称。实际上可以创建多个配置文件,来为每一个 Target 设置一个。在创建文件时 Targets 部分一定要全部取消选择,因为这个文件只是一个编译“配置文件”,我们不希望这个文件被编译进 App 中,或者作为 App 中的 Resource 文件。创建成功后也要去掉所有的 Target Membership


2. 填写配置
本篇文章聚焦于版本号控制,所以我们只需要填入版本号相关字段,其他字段可参考 Build settings reference。
-
MARKETING_VERSION 是 Version,对应Info.plist 中的CFBundleShortVersionString -
CURRENT_PROJECT_VERSION 是 Build,对应Info.plist 中的CFBundleVersion
那么最后您的 .xcconfig 文件看起来就是这样:
1 | // |
3. 将配置文件映射到构建配置
您可以为 Debug 版本和 Release 版本指定不同的配置文件。要指定构建配置文件:
- 在 Project 中选择您的项目。
- 点击”Info”选项卡。
- 点击展开三角形,以展开”配置”区域中的 Debug 和 Release 构建配置。
- 从弹出菜单中为您的 Debug 和 Release 构建选择配置文件。您也可以选择一个适用于两种构建类型的文件。一定要给所有的项目都设置配置文件

4. 设置版本号从 .xcconfig 文件继承
这也是本篇文章中最重要的,因为按道理我们在上一步中设置了Debug 和 Release 版本使用我们提供的配置文件进行构建,但实际上最重要的一步 Apple 没有给我们讲,也就是我们要设置版本号要从.xcconfig 文件继承,而不是采用在 Xcode 中填写的。
- 在 Target 中选择一个 Target,选择
Build Settings,在下面的选项卡中选择Basic 和Levels - 搜索
MARKETING_VERSION,也就是我们在.xcconfig文件中设置的字段 - 双击绿色框中的版本号,里面填入
$(inherited) - 同样的方法搜索
CURRENT_PROJECT_VERSION,然后绿色框中的版本号双击填入$(inherited)
你所有的 Target 都应该完成上面的 2-4 步骤

5. 测试
最后更改.xcconfig 文件中的版本号,构建应用,您应该能发现所有 Target 的版本号都发生了改变,这我们就做到了只通过一个文件控制多个 Target 的版本号。


