Android 版本命名规范

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