版本控制—使用Gradle自动管理应用程序版本

来源:互联网 发布:网络直播间装修效果图 编辑:程序博客网 时间:2024/06/06 18:41

我们在开发App时,通常在项目的Release阶段我们需要设置应用的版本号和版本名称,也就是设置下面两个属性

versionCode 
versionName

版本号

其中versionCode的值是int类型,主要作用就是作为应用内部的版本编号,为版本升级提供唯一的标识,通常设为是自增的,假如当前app的versionCode为1,下一代app的versionCode为2,那么就可以通过它来判断应用是否需要升级、是否有新版本,也就是versionCode的值越大那么app就越新。它通常是对用户不可见的,因为它只是一个int类型值,显示出来无任何意义

versionName的值是String类型,它就是版本的名称,通常叫做版本号,是提供给用户看的,以便供用户知道当前自己安装的是哪个版本的app,一般在app的设置界面和应用市场上我们看到的版本号就是这个

手动管理产生的问题

假设当前版本是这样的:

defaultConfig {            applicationId "com.sunzxy.sunzxyongdemo"            minSdkVersion 16            targetSdkVersion 23            versionCode 11246            versionName "6.0.1"        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

它的versionCode为11246,现在已经非常大了,通常我们手动去记住这个versionCode和对应的versionName比较容易出错,而且随后期迭代的非常多的时候,这时候非常混乱,而versionCode(Name)出错则会导致不可预料的后果: 
1、新Release的应用versionCode比旧版的versionCode小,导致app升不了级,新Release的应用使用了同一个的versionName,导致用户不升级 
2、手动管理的话,假如其中一个工程师一不小心把下一代app的versionCode误写成了12246,而再下一版的是另外一个工程师发布的,如果versionCode还是按最开始的自增,那么versionCode为11248,当应用发布出去,包括所有versionCode小于12247的应用用户将都升不了级,唯一的办法就是把今后迭代的app的versionCode从12246以后开始自增

通过gradle自动管理应用程序版本

上面我们说了采用人工的方式去管理应用的版本是比较容易出错的,所以既然手动管理不行,那么就采取自动管理的方式去管理吧,而versionCode的作用就是提供一个int类型的版本标识供应用升级,而每一次release的时候这个versionCode都应该确保比旧版本的值大,所以可以通过在release时候让versionCode自动+1来确保这个版本是最新的版本,而这个工作则是由gradle来完成的。 
我们在Module目录下新建一个version.properties文件作为存储versionCode文件,里面我们给它一个初始值为

VERSION_CODE=1

这里写图片描述这里写图片描述

然后在Module目录下的gradle配置这样一段代码:

    def versionPropsFile = file("version.properties")    if (versionPropsFile.canRead()) {        Properties versionProps = new Properties()        versionProps.load(new FileInputStream(versionPropsFile))        def runTasks = gradle.startParameter.taskNames        def int verCode = versionProps['VERSION_CODE'].toInteger()        if (':app:assembleRelease' in runTasks) {            versionProps['VERSION_CODE'] = (verCode + 1).toString()            versionProps.store(versionPropsFile.newWriter(), null)        }        defaultConfig {            applicationId "com.sunzxy.sunzxyongdemo2"            minSdkVersion 16            targetSdkVersion 23            versionCode verCode            versionName "1.2"        }    } else {        throw new GradleException("Could not read version.properties!")    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这里写图片描述

那么当我们release这个项目时候,每release一次这个versionCode将会自动加1,如下我release了一次,它自动加了1 
这里写图片描述

通过gradle自动管理versionCode,我们无需手动修改这个versionCode了,只需要在release时候把版本号versionName更新即可

0 0
原创粉丝点击