使用Gradle自动设置app的versionCode

2016-05-14 Views 归档 android

前言

在module的build.gradle文件中,记录着当前app的versionCode和versionName两个参数,用来标示app的版本信息。

  • versionCode:int型的值,大多数的app通过对比versionCode值,来提示用户是否需要更新。
  • versionName:指示当前版本信息,一般为“1.2”、“v2.0.3”等等,方便运维以及统计的SDK记录bug和反馈信息。

对于versionCode的值,每次release之前都要手动的自增修改,岂不是很low?下面介绍我了解的两种方式。

versionCode自动化方式

使用git commit

若项目使用git做版本管理,那么可以使用项目的commit值作为versionCode,一般来说commit值不会大到漫无边际,5位到6位已经是很大了。另外versionCode是int类型的值,2^31你懂的,一个app的versionCode也不会大到如此地步。😅

闲话少说,开始吧

首先在build.gradle中定义如下变量

def cmd ='git rev-list HEAD --count'
def getVersion = cmd.execute().text.trim().toInteger();

在android标签下的defaultConfig中替换versionCode为上面我们定义的getVersion变量即可。还是蛮简单的哈。

注意

变量定义在android标签之外
git命令rev-list HEAD记录的是当前分支的总commit数,因此在打包时分支应切换为与git仓库中对应的分支

使用文件

在项目的根目录创建version.properties文件,在文件中记录当前的版本数

VERSION_CODE=1

然后在build.gradle文件中添加

def versionFile = file('version.properties')

if (versionFile.canRead()) {
    def Properties versionProps = new Properties()

    versionProps.load(new FileInputStream(versionFile))

    def code = versionProps['VERSION_CODE'].toInteger() + 1

    versionProps['VERSION_CODE']=code.toString()
    versionProps.store(versionPropsFile.newWriter(), null)
}
else {
    throw new GradleException("Could not read version.properties!")
}

修改编译后apk名称

修改完versionCode之后,就想设置一下编译后文件名称,方便测试和运维使用。

一般不做修改的apk名称就是app-release.apk,仅仅是module名称+编译类型,一点都体现不出versionName以及versionCode信息。

我们可以通过修改build.gradle文件中android标签内的输出文件,来修改编译后apk文件名称。

  android.applicationVariants.all{ variant ->
    variant.outputs.each{ output->
        def outputFile = output.outputFile
        if(outputFile != null && outputFile.name.endsWith('.apk')){
            def fileName = "APP-${defaultConfig.versionName}_${defaultConfig.versionCode}}.apk"
            output.outputFile = new File(outputFile.parent,fileName)
        }
    }
}

fileName修改成想要的就ok了,比如添加编译时间,发行渠道应用市场等等

def getReleaseTime(){
return new Date().format("yyyy-MM-dd",TimeZone.getTimeZone("UTC"));
}

参考

  1. http://my.oschina.net/mengshuai/blog/551356?fromerr=7WKXr2ee
  2. http://www.race604.com/android-auto-version/

赏 支付宝扫码打赏 微信打赏

△