需要更正一个概念,开发人员和用户所说的APP版本号是两种不同概念,一个Android应用程序中或其他应用程序都有着一个versionCode和versionName。Android应用程序中的versionCode:对用户不可见,仅用于应用程序内部版本识别和版本升级;versionName:正确的叫法应该是版本名称,即用户所说的“版本号”,对用户是可见的,方便用户识别和判断新旧版本。以后再说APP“版本号”多少,指的是APP的versionName,更新APP版本需要注意几个问题:1、如何命名versionCode和versionName?2、如何命名更新后的versionCode和versionName?3、更新versionCode,未更新versionName会怎么样?4、更新了一个带bug的版本如何撤销?5、发布了一个写错的versionCode和versionName咋办?
一、如何命名versionCode和versionName?
Android应用程序的versionCode、versionName定义在AndroidManifest.xml文件里面,打包签名后的apk文件高版本APP会覆盖低版本的APP,安装成功;反之低版本APP无法覆盖高版本APP,提示安装失败;这里所说的高低版本指的是versionCode的值,versionCode是一个整型参数,versionName是一个字符串参数,应用程序的版本更新和版本识别就是通过versionCode的值判断的,所以versionCode的命名必须是一个增长的曲线,版本只能升,不能降。发布的第一个测试版,versionCode命名为1,发布的第一个正式版,versionCode命名为2;versionName的命令规则:主版本号.次版本号.修订版本号,发布的第一个测试版,versionName命名为1.0,发布的第一个正式版,versionName也命名为1.0。
主版本号:功能模块有大的变动,比如增加多个模块或者整体架构发生变化。
次版本号:和主版本相对而言,次版本号的升级对应的只是局部的变动。但该局部的变动造成了程序和以前版本不能兼容,或者对该程序以前的协作关系产生了破坏,或者是功能上有大的改进或增强。
修订版本号:局部的变动,主要是局部函数的功能改进,或者bug的修正,或者功能的扩充。
二、如何命名更新后的versionCode和versionName?
重命名versionCode、versionName来标识APP的更新情况,更新后的应用程序,versionCode在原有的基础+1,versionName根据修改的情况确定,比如:1.0.1或1.1.0。修改versionCode上架到第三方应用市场后,手机上的应用市场软件检测versionCode大小,已安装APP的versionCode大小应用市场上架的APP,应用市场提示用户更新,否则不提示。如果是自己开发的自动更新功能,每次启动应用程序的时候,检测推送版本的versionCode是否大于当前版本,提示更新,对比新旧版本的versionCode,不建议对比versionName。versionCode值大的APP可以覆盖versionCode值低的APP,安卓手机系统只识别versionCode,versionName方便用户记录版本的信息。
三、更新versionCode,未更新versionName会怎么样?
甲方要求乙方修复启动应用程序的bug,调整Android Project部分代码后,重新打包一个版本发布,修改了versionCode,未修改versionName,第三方的应用市场上架后,旧版本的APP收到应用市场推送更新的提示,看到提示后用户会有点蒙了,比如:当前版本1.1.2,修改versionCode后的版本也是1.1.2,用户就分不清楚为啥versionName一样的两个版本提示更新操作?这可能会误导用户,最好的解决办法,发布任何一个新版本时,修改versionCode的同时别忘了修改versionName,保持versionCode和versionName同时增长。
四、更新了一个带bug的版本如何撤销?
在第三方的应用市场发布了一个存在bug的应用程序,同时部分用户已经更新了该版本,如果仅仅撤销新版本下载安装,回滚到是一个版本无法解决根本问题,已安装的用户因为bug使用不了。这个时候,软件开发工程师需要立即解决bug问题,然后同时更新versionCode和versionName,发布一个更高版本的APP,那么已安装的或未安装的用户都提示安装新版本,安装了bug版本的用户必须更新到修复版本才可以使用,这是发布一个bug版本的一些建议。
五、发布了一个写错的versionCode和versionName咋办?
程序员修改versionName的时候,不小心将versionName的值1.1.21的versionCode写成了1121,更新下一个版本versionName的值1.1.3的versionCode写成113,发现更新的版本113无法成功安装,覆盖旧版本失败。这个时候只能够将113改成大于1121的值,重新打包发布,保证已安装和未安装的用户都可以成功安装更新版本。建议写好一个版本控制的文档,使用记事本记录所有更新的版本号和版本名称,以及即将使用的版本号和版本名称,保证versionCode和versionName准确无误,通常测试版本的versionCode写成奇数字,比如:1,表示测试版本;发布版本写成偶数字,比如:2,表示发布版本,versionName有三部分组成:主版本号、次版本号和修订版编号。主版本号改动比较少除非APP功能模块有较大变动,次版本号在APP局部功能改动的情况下变动,比如:调整主界面布局,通常修改更多的是修订版本号,比如:修改bug或增加每个功能。