本控制对于发布新版本和开发中的版本维护有着关键性的作用,版本控制之所以重要的原因如下:
1.用户在安装APP的时候需要知道详细的版本信息,并且在对已有版本进行升级的时候,能否正确安装新版本都和版本控制有关。
比如:当手机中安装APP的versionCode=1,升级更新的版本号是2(versionCode=2),此时APP可以正常安装更新。反之,如果手机中当前APP版本号是2,升级的或者从其他渠道获取的同一APP的版本号为1,此时替换安装就会失败。
这种情况就是说,同一个APP低版本是不能直接覆盖安装手机中已存在的高版本应用(通过版本号(versionCode)来判断)。
这样就给我们在应用升级维护过程中,提高了软件的可维护性和安全性。
2.对于其他应用想要搜索或者调用指定版本号和版本名称的应用来说,有了可靠的保证。
当我们发布在市场上有多个版本的APP的时候,比如不同版本对应不同型号的终端,这时我们可以通过版本控制来找到适合的APP。
3.对于我们自己的版本更新系统或者第三方的APP市场,也通过版本号和版本名称来找到和用户终端设备或者终端应用相匹配的APP展示给用户。对于第三方APP市场来说,这个 版本更为关键的是,决定对用户下载下来之后的兼容性判断起到一定管控作用。
所以版本控制不能忽视,我们可以通过有效的版本控制来管控我们发布到市场的应用,以便得到更好的用户体验。
怎么去设置你的应用的版本号和版本名称,下面做一个简单的介绍。
VersionCode ------- 根据上面的描述,版本号(versioncode)是相对比较重要的一个属性。versionCode是一个Integer类型的值。所以大家在设置的时候,不要将versionCode设置的太大,最好不要超过Integer的取值范围(当然一般也是不会超过的),一般大家在发布自己的第一个应用到市场的时候,版本取值为1(versionCode=1),这也是目前典型和普遍的做法。
然后,每次发布更新版本时可以递增versionCode的值。上面描述版本控制重要性时也描述过,一个新版本的应用的versionCode不能小于之前旧版本的versionCode值,否则进行替换更新升级时会出错,系统提示无法安装。当然,这也不是强制的,只是正式发布应用时,建议必须考虑的问题。
VersionName ------ 这是一个值为String类型的属性,一般和VersionCode成对出现。VersionCode是方便程序开发者运行和维护Application而设置的一个有效的值。versionName是一个版本的描述,给用户看的,也是用户放在各个第3方平台上提供给使用者看的一个版本名,可以说是对VersionCode的解释和描述。一般格式可以为:1.1.2(major.minor.point)的形式。
下面是一个Manifest.xml文件样例:
![Manifest.xml](https://i-blog.csdnimg.cn/blog_migrate/b0dd2187c4bce57be824fbf7059b76b7.png)
以上代码表示当前.apk是第二个版本,通过versionName值1.1可以看出此版本是在1.0版本上的一个优化改造版本,区别和1.0版本不大。
如果是一个UI风格或者业务逻辑有较大调整的应用,版本一般会升一个级别,比如应该定义为2.0