如何根据上次批准的 iOS 版本增加版本号

How to increment version number according to last approved iOS version

我知道有 increment_version_number 通道,但它增加了放置在 Info.plist 文件中的版本。这意味着每次上传到 TestFlight 后,开发人员都必须使用新版本更新 Info.plist 文件。

此外,Fastlane 有 get_version_number 通道,但我无法让我的脚本工作,因为它不能像 2.4.1 那样用最后一个数字增加版本。

那么,我如何才能对 TestFlight 中的批准版本(目前为 2.4.1)+1(到最后一位)?

如果您在 Testflight 中已有应用的上传,则必须增加 Version numberBuild number(或两者)。

Version number 可以随 increment_version_number 自动递增(如您所述),但您应该指定要递增的内容。 在你的情况下(v2.4.1):主要版本号是 2,次要版本号是 4,补丁是 1.

所以您应该在 building/archiving 应用程序之前的 Fastfile 添加此代码段:

increment_version_number(
  bump_type: "patch"
)

但是我不建议自动设置版本号,因为应用程序的版本号取决于您在更新中提供的内容。如果它只是一个错误修复版本或性能优化,则将最后一位数字递增 patch。如果您添加了一些很酷的新功能,您应该增加 minor 版本。如果更新就像是从头开始重写、完全重新设计或引入了一些重大更改,那么我会增加版本中的 major 数字。总是增加 patch 数字是不优雅的,因为版本号是有意义的。

在我正在处理的项目中,我们过去常常在发布时手动增加版本号,但使用 Fastlane 会自动增加 Build numbers

这是我们所做的:

1.) 在项目中启用 Apple Generic Versioning:(Project > Build Settings > Versioning > Versioning System: Apple Generic)

2.) 设置基础版本号:(项目 > 构建设置 > 版本控制 > 当前项目版本:1)

3.) 添加以下简单的 Ruby 助手 class 到 fastlane/utility 文件夹:

changelog_helpers.rb:

class BuildNumberFactory
  class << self
    def make
      `git rev-list HEAD --count`
    end
  end
end

4.) 将此行添加到 Fastfile 中的第一行:

Dir.glob('./utility/*').each { |file| require file }

5.) FastFile 中的用法:

lane :your_submit_testflight_lane do
    increment_build_number build_number: BuildNumberFactory.make
    # gym, pilot, other actions after setting the build number
end 

此方法假定您使用 Git 进行版本控制。基本上,对于每个提交,Fastlane 都可以分配一个特定的构建号。而且由于您上传的应用程序 Build number 递增,因此 Version number 没有变化也不是问题。

当您要发布应用更新时,我建议:

1.) 在新提交中增加 Version number (e.x. 2.4.2),将其推送到远程

2.) 为该提交创建一个 Git 标签

3.) 运行 将构建上传到 Testflight 的 Fastlane 通道

使用上述技术,开发人员在向 Testflight 提交每日测试构建时不必一直更新 Info.plist Version number。 您只需在发布更新时增加 Version number - 无论如何都无法避免。

希望对您有所帮助! :)