版本号

一般我们使用语义化版本(Semantic Versioning)的命名方式,简称 SemVer。

官方网站:semver 版本管理规范
中文译本:https://semver.org/lang/zh-CN/

版本号的格式为:[X].[Y].[Z].[B]

2.21.210322G (c9f)
  • X(主版本号):2
  • Y(子版本号):21
  • Z(修订号):210322G
  • B(build,编译版本号):(c9f)

[主版本号].[子版本号].[修订号].[编译版本号] 必须为非负整数,且不得包含前导零,必须按数值递增

主版本号

当重大升级改动,一般 API 的兼容性变化时,包括但不限于新增特性、修改机制、删除功能, 一般不兼容上一个主版本号。

  • 主版本号为0时表示预研版本
  • 主版本号默认从0开始,单步递增,步长为1
  • 1.0的版本号:1.2.210222(11e7)
  • 19的版本号: 2.19.210115(1193)
  • 21的版本号: 2.21.210220(c7e)

1.0的硬件都是一体机,19和21的硬件都是分体机(屏幕主机是分开的)。这对于产品来说是一个重大的升级,所有软件必须重新适配。所以主版本号应该加一(这里的19和21貌似指的是年份)

子版本号

新增或修改功能时,必须是向前兼容,不影响软件的整体流程或概念的更新。

  • 主版本号升级时,子版本号重置为0
  • 子版本号默认从0开始,单步递增,步长为1
  • 19的版本号: 2.19.210115(1193)
  • 21的版本号: 2.21.210220(c7e)

19是基于Android4.4开发的,21是基于Android9.0开发的。9.0兼容4.4,但是4.4没有9.0中的新功能。所以子版本号加一

修订版本号

一般用于 Bug 修复,使用当天的年月日(YYYYMMDD)作为修订版本号

  • 主版本号或子版本号升级时,修订版本号重置为0
  • 1.0的版本号:1.2.210222(11e7)
  • 19的版本号: 2.19.210115(1193)
  • 21的版本号: 2.21.210220(c7e)

上面的三个版本号,分别代表210222、210115、210220三个日期当天发布了新版本

编译版本号

一般用于 Bug 修复,使用当天的年月日(YYYYMMDD)作为修订版本号

  • 1.0的版本号:1.2.210222(11e7)
  • 19的版本号: 2.19.210115(1193)
  • 21的版本号: 2.21.210220(c7e)

上面的三个版本号,括号中的是16进制的数字。转换为十进制分别是4583、4499、3198。表示编译了多少次,每编译一次都会加一。
进制转换器:https://tool.oschina.net/hexconvert

软件版本阶段说明

  • alpha:内部版本。此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
  • beta:测试版。此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
  • release:发行版。该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。
  • rc:即将作为正式版发布。该版本相对于α 版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。
  • demo:演示版
  • enhance:增强版
  • free:自由版
  • full version:完整版,即正式版
  • lts:长期维护版本
  • standard:标准版
  • ultimate:旗舰版
  • upgrade:升级版

参考资料

语义化版本 2.0.0