Xcode 11改变了版本处理方式。
到目前为止,我有两个目标,Dev&Prod,每个目标都有单独的版本。产品版本将完全是手动的,开发版本将是自动化的:
- 在构建期间,将运行一个脚本,然后该脚本将获取git标签。一个标签将包含有关最新Dev版本的信息。如果是较新版本,它将仅针对开发目标更新Info.plist中的版本
- 如果将使用脚本部署Dev(创建一个IPA,辞职以进行内部分发,上传),则将增加构建版本。包含版本信息的远程标签随后将被更新
通过这种方式,每个人的开发版本都将自动同步,并且管理多个开发版本将变得很容易。产品的更新频率相对较低,因此可以手动进行管理。
但是,在Xcode 11中,只要在“常规”标签中更新了版本(或内部版本),Info.plist
中的条目就会被$(CURRENT_PROJECT_VERSION)
和$(MARKETING_VERSION)
以及Current Project Version
和{而是使用“构建设置”标签中的{1}}。
到目前为止,我将使用Marketing Version
来读取和更新PlistBuddy
中的版本,但是从现在的理解来看,我不得不使用Info.plist
。但是,它有两个问题:
- 如果作为“运行脚本”阶段运行,则会导致构建过程取消
- 它无法处理两个目标的单独版本(因此我不能仅在离开Prod的情况下自动管理Dev)
我知道从理论上讲,我仍然可以使用agvtool
进行版本控制,但是当有人在“常规”选项卡中手动更改版本时,整个事情都会搞砸了(根据我的经验,这会发生)。 / p>
我有两个问题:
- 我对流程的理解正确吗?
- 仍然可以使用与以前类似的使用
Info.plist
的版本管理系统吗?