Android安卓应用版本命名规范

Android 设置APP版本号

(1) 在清单文件AndroidManifest.xml中manifest 标签节点中加入android:versionCode和android:versionName的值即可设置应用的版本号。如以下代码:
Android安卓应用版本命名规范_第1张图片
(2) build.gradle(Module:app)配置文件可以同样设置版本号
(注意:推荐使用build.gradle设置版本号,因为一个方便在build.gradle管理版本号和其他的包名等;另一个是build.gradle和AndroidManifest同时存在时,build.gradle更高,会覆盖掉AndroidManifest里面的版本号配置)
Android安卓应用版本命名规范_第2张图片
Android应用版本命名规范
版本控制对于发布新版本和开发中的版本维护有着关键性的作用,版本控制之所以重要的原因如下:
1.用户在安装APP的时候需要知道详细的版本信息,并且在对已有版本进行升级的时候,能否正确安装新版本都和版本控制有关。
比如:当手机中安装APP的versionCode=1,升级更新的版本号是2(versionCode=2),此时APP可以正常安装更新。反之,如果手机中当前APP版本号是2,升级的或者从其他渠道获取的同一APP的版本号为1,此时替换安装就会失败。
这种情况就是说,同一个APP低版本是不能直接覆盖安装手机中已存在的高版本应用(通过版本号(versionCode)来判断)。
这样就给我们在应用升级维护过程中,提高了软件的可维护性和安全性。
2.对于其他应用想要搜索或者调用指定版本号和版本名称的应用来说,有了可靠的保证。
当我们发布在市场上有多个版本的APP的时候,比如不同版本对应不同型号的终端,这时我们可以通过版本控制来找到适合的APP。
3.对于我们自己的版本更新系统或者第三方的APP市场,也通过版本号和版本名称来找到和用户终端设备或者终端应用相匹配的APP展示给用户。对于第三方APP市场来说,这个 版本更为关键的是,决定对用户下载下来之后的兼容性判断起到一定管控作用。
所以版本控制不能忽视,我们可以通过有效的版本控制来管控我们发布到市场的应用,以便得到更好的用户体验

(1) VersionCode
根据上面的描述,版本号(versioncode)是相对比较重要的一个属性。versionCode是一个Integer类型的值。所以大家在设置的时候,不要将versionCode设置的太大,最好不要超过Integer的取值范围(当然一般也是不会超过的),一般大家在发布自己的第一个应用到市场的时候,版本取值为1(versionCode=1),这也是目前典型和普遍的做法。
然后,每次发布更新版本时可以递增versionCode的值。上面描述版本控制重要性时也描述过,一个新版本的应用的versionCode不能小于之前旧版本的versionCode值,否则进行替换更新升级时会出错,系统提示无法安装。当然,这也不是强制的,只是正式发布应用时,建议必须考虑的问题。
此值必须是递增变大的整数,为了比较是否需要更新。常见的有两种命名方式:
1、数字1,2,3递增法
2、时间命名法,直接采用发布当前的日期,比如versioncode:20170527
3、版本控制提交号,此方式便于回滚到对应版本的源代码。

(2) VersionName
这是一个值为String类型的属性,一般和VersionCode成对出现。VersionCode是方便程序开发者运行和维护Application而设置的一个有效的值。versionName是一个版本的描述,给用户看的,也是用户放在各个第3方平台上提供给使用者看的一个版本名,可以说是对VersionCode的解释和描述。一般格式可以为:1.1.2(major.minor.point)的形式。

major是主版本号,一般在软件有重大升级时增长
minor是次版本号,一般在软件有新功能时增长
maintenance是维护版本,一般在软件有主要的问题修复后增长
build构建版本(测试版本一般会用到)

很多公司对版本命名都有自己的一套规范,例如:
(SVN是Subversion的简称,是一个开放源代码的版本控制系统)
<主版本号>.<子版本号> 如:YinLiFang_1.0_10242.apk
<主版本号>.<子版本号>.<阶段版本号><日期版本号加希腊字母版本号>如: YinLiFang_1.0.0.170517_R.apk
<主版本号>.<子版本号><日期版本号加希腊字母版本号>如: YinLiFang_1.0.170517_beta.apk
还有其他一些会在主版本号前加一个 v 等等,大体上想表达的意思都差不多,为了规范命名,为了方便以后管理,为了描述当前的包处于哪个阶段。这里大致介绍下软件版本号的组成部分,上面也给出了一些示例,一般由四部分组成:<主版本号>.<子版本号>.<阶段版本号>.<日期版本号加希腊字母版本号> 。 如:1.1.2.170517_alpha 。
那么希腊字母版本号是什么意思呢?
希腊字母版本号共有5种,分别是:base、alpha、beta、rc、release。 完全的版本号定义分三项: <主版本号.><子版本号>.<阶段版本号>(即:1.1.0),下面对版本阶段进行下简单的介绍。


希腊字母所代表的版本阶段介绍
Alpha版:也叫α版,此版本主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
Beta版:此版本相对于α版已经有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。
RC版(Release Candidate发布候选版本):此版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几,测试人员基本通过的版本。
Release版:此版本意味着“最终版本”、“上线版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号®。


版本号修改规则
以 YinLiFang_1.0.0.170517_beta.apk 为例
Major主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改。
Minor子版本号(0):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目决定是否修改。
Maintenance阶段版本号(0):一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由项目经理决定是否修改。
日期版本号(170517):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。
希腊字母版本号(beta)::此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。

本文参考来源:
[1]https://blog.csdn.net/gao_chun/article/details/72417127

你可能感兴趣的:(Android开发知识)