Xcode 11 改变了处理版本的方式。
到目前为止,我有两个目标,Dev 和 Prod,每个目标都有一个单独的版本。Prod 版本将完全是手动的,Dev 将是自动化的:
- 在构建期间,将运行一个脚本,然后该脚本将获取 git 标签。一个标签将包含有关最新开发版本的信息。如果它较新,它将更新 Info.plist 中的版本,仅用于 Dev 目标
- 当 Dev 将使用脚本部署(创建 ipa、辞职以进行内部分发、上传)时,构建版本将增加。然后将更新包含版本信息的远程标签
通过这种方式,每个人的开发版本都会自动同步,并且管理多个开发版本会很容易。Prod 的更新频率相对较低,因此可以手动管理。
但是,在 Xcode 11 中,每当版本(或构建)在 General 选项卡中更新时,条目Info.plist
将替换为$(CURRENT_PROJECT_VERSION)
and $(MARKETING_VERSION)
,Current Project Version
并且Marketing Version
使用 build settings 选项卡中的 and 代替。
到目前为止,我PlistBuddy
将Info.plist
使用agvtool
. 但是,它有两个问题:
- 如果它作为运行脚本阶段运行,则会导致构建过程取消
- 它无法处理两个目标的单独版本(所以我不能只自动管理 Dev,而让 Prod 一个人呆着)
我知道理论上我仍然可以Info.plist
用于版本控制,但是一旦有人在“常规”选项卡中手动更改版本,整个事情就会变得一团糟(根据经验,我知道这会发生)。
我有两个问题:
- 我对流程的理解正确吗?
- 仍然可以使用
agvtool
类似于我以前的版本管理系统吗?