gradle下,自动关联versionName,versionCode

一、基本介绍


  • versionCode
    用于版本升级,int 类型,对用户不可见。
  • versionName
    用于对用户展示的版本名,字符串类型。

二、关联


一般为了统计版本,方便后端的接口升级,会用一些算法他们关联起来。例如:

versionName  -> versionCode
1.0.1     -> 100 000 001
1.0.0     -> 1*2^16+0*2^8+0*2^1

注意:versionCode是Int型的。

三、简单实现


1,从文件读取versionName

//从version.properties文件获取versionName
def getVersionName() {
    def versionFile = file('version.properties')

    if (versionFile.exists()) {
        def Properties versionProps = new Properties()
        versionProps.load(new FileInputStream(versionFile))
        def versionCode = versionProps['build.name'].toString()
        return versionCode
    } else {
        throw new GradleException("Could not find version.properties!")
    }
}

2,获取versionCode

//获取版本code,通过100 000 000 关联versionName
def getVersionCode() {
    def versionSplite = getVersionName().split("\\.")
    println(versionSplite.toString())
    StringBuffer sb = new StringBuffer();
    for (item in versionSplite) {
        switch (item.length()) {
            case 1:
                sb.append('00');
                sb.append(item);
                break
            case 2:
                sb.append('0');
                sb.append(item);
                break
            case 3:
                sb.append(item);
                break
            default:
                throw new GradleException("version name is error !")
                break
        }
    }
    return sb.toInteger()

}

3 version.properties

version.properties

4,配置gradle versionCode,versionName


 android{
     ...
    defaultConfig{
        def vCode = getVersionCode()
        def vName = getVersionName()
        defaultConfig {
            applicationId "com.xxx"
            minSdkVersion 14
            targetSdkVersion 22
            versionCode vCode
            versionName vName

    }
}

最后


用studio 时间不长,对gradle了解还不够。如果,有更好的方式或者学习资料,记得留个地址哈。

你可能感兴趣的:(gradle)