agvtool:自动化iOS内部版本号和版本号

DevOps和持续交付实践可将持续构建部署到我们的内部或Beta测试平台。 必须管理iOS应用的版本和内部版本号。 作为最佳DevOps做法,iOS团队应经常向AppStore发布新版本(即市场营销版本),并且应在向AppStore提交应用程序之前为每个版本进行多次构建。 该发行版可能具有具有不同功能的不同内部版本。 管理iOS应用的内部版本号和版本号非常重要,以确保我们将正确的内部版本发送到AppStore。 在本文中,我们将看到如何使用agvtool命令行实用程序来管理我们的iOS应用的版本和内部版本号。

版本和内部版本号

在开始使用agvtool之前,让我们了解什么是iOS应用程序的版本和内部版本号。

版本号

基本上,版本号是该应用程序的市场编号,它是显示给应用程序用户的编号,用于标识应用程序的发行版本。 它作为CFBundleShortVersionString(捆绑版本字符串,简称)存储在应用程序的Info.plist中。

内部编号

内部版本号标识应用程序的未发布或已发布版本。 它作为CFBundleVersion(捆绑版)存储在应用程序的Info.plist中。

我们可以为特定版本进行多个构建。

agvtool

agvtool是一个命令行工具,可让您自动将这些数字递增到下一个最高数字或特定数字。 该工具与Xcode命令行工具一起提供,可以从xcrun实用程序直接访问。

  $ xcrun agvtool 
$ xcrun-查找agvtool

您可以从其文档页面阅读该工具提供的选项

  $ man agvtool 

这将显示agvtool随附的所有命令。

现在,我们将看到如何在真实的iOS应用程序上使用agvtool。 为了做到这一点,让我们在Xcode中创建一个名为agvtool-Demo的单视图iOS应用。 从命令行开始使用agvtool之前,需要确保以下几点。

  • 启用agvtool和版本控制系统
  • 禁用/启用源代码管理设置

我们将看到如何在Xcode中进行设置

启用agvtool

为了启用agvtool,我们需要确保在目标构建设置中正确设置了“ 当前项目版本”和“ 版本控制系统”属性。 选择目标构建设置,然后搜索“版本”。 现在将“ 当前项目版本 ”设置为1,并将“ 版本控制系统”值选择为“ Apple Generic”

接下来要验证的是确保“ 信息”选项卡具有捆绑软件版本和捆绑软件版本字符串,对于新项目,简短值可能设置为1。

禁用/启用源代码控制(CVS,SVN)

当agvtool更改版本或内部版本号时,它将在Xcode项目内的某些文件中进行更改。 如果使用CVS或SVN,则可以将这些更改提交给源代码管理。 如果您不使用SVN或CVS,则无需担心这些设置。 默认情况下,提交对CVS或SVN的更改为ON,但是,我们可以通过运行以下命令来禁用该设置。

  $默认写入agvtool SVNEnabled否 
$默认写入agvtool CVSEnabled否

命令行agvtool

现在,我们已经完成了所有设置以从命令行使用agvtool。 我们将看到一些我们经常使用的有用命令。 我们需要从.xcodeproj文件所在项目的根目录运行agvtool命令。

查看现有值

  • 版本号

我们可以使用以下命令查看当前版本号

  $ xcrun agvtool what-marketing-version 
  • 内部编号

我们可以使用以下命令查看当前的内部版本号

  $ xcrun agvtool what-version 

更新到下一个值

  • 下一个版本号

自动升级到下一个版本并不理想,因此我们必须在命令中指定要更新到的下一个版本的值。 我们可以使用以下命令将值更新为下一个版本号

  $ xcrun agvtool new-marketing-version 2.0 
  • 下一个内部版本号

我们可以使用以下命令将内部版本号增加到下一个内部版本号

  $ xcrun agvtool next-version-全部 

我们还可以使用命令指定内部版本号的特定值。 例如,我们希望内部版本号为3.2,那么我们可以使用以下命令

  $ xcrun agvtool新版本-所有3.2 

请注意,当我们更新版本或内部版本号值时,它将更改Info.plist文件或.xcodeproj文件中的。 我们需要某种源控制机制来将更改提交回源控制。

其他选项是什么

到目前为止,我们已经看到可以使用Apple的本机命令行工具来管理版本和内部编号,但是,还有其他一些第三方工具(例如Fastlane)也可以执行相同的操作。 Fastlane可以同时增加内部版本号和版本号。 可以使用crement_version_number操作来增加版本号,该版本号也具有各种选项。 我们可以使用主要或次要版本,也可以指定版本号。

 递增版本号( 
ump_type:“主要”

crement_build_number操作可用于更新内部版本号值。

  crement_build_number( 
build_number:“ 5”

有许多用于管理内部版本号和版本号的选项,但是这些操作还使用agvtool进行所有这些更改。

结论

苹果的本机命令行工具(例如agvtool)可让您控制iOS应用的版本和内部版本。 从源代码(即用于iOS应用程序的基础架构即代码)管理所有内容,无需编写脚本,而无需依赖第三方框架。 希望您喜欢这篇文章,并随时分享使用agvtool的经验。

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..