项目构建的增量版本

时间:2014-02-24 10:45:40

标签: android gradle android-studio android-gradle build.gradle

在Android Studio中,我有关于应用程序版本的build.gradle默认信息:

android {    
    defaultConfig {
        versionCode 24
        versionName "0.1 beta"
    }
}

如何在每个项目编译中自动增加versionCode

1 个答案:

答案 0 :(得分:8)

引自my book

由于android:versionCode是一个单调递增的整数, 一种自动化方法是在每次构建时简单地增加它。 虽然这可能看起来很浪费,但是20亿次构建是构建的很多, 所以一个独立开发者不太可能用完。同步这样的versionCode 团队中的价值观会变得更复杂,但对于个人而言 case(开发人员,构建服务器等),使用Groovy非常可行。

Gradle/HelloVersioning 示例项目使用version.properties文件作为后台存储 版本信息:

def versionPropsFile = file('version.properties')

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

    versionProps.load(new FileInputStream(versionPropsFile))

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

    versionProps['VERSION_CODE']=code.toString()
    versionProps.store(versionPropsFile.newWriter(), null)

    defaultConfig {
        versionCode code
        versionName "1.1"
        minSdkVersion 14
        targetSdkVersion 18
    }
}
else {
    throw new GradleException("Could not read version.properties!")
}

首先,我们尝试打开version.properties文件,如果没有则失败 存在,要求开发人员手动创建启动文件:

VERSION_CODE=1

当然,这个脚本的更强大的实现将处理这种情况和 为开发者提供初始值。

然后,脚本使用所示的read-the-custom-properties逻辑 在上一节 [注意:本书未包括在内] 来阅读现有的内容 value ...但是它将旧值增加1以获取要使用的新代码。 然后将修改后的代码写回到之前的属性文件中 已应用于defaultConfig块。

在这种情况下,脚本会抛出GradleException来停止构建if 无法找到version.properties文件,否则无法找到 读取。