Android 项目构建时的增量版本

Android 项目构建时的增量版本,android,gradle,android-studio,android-gradle-plugin,build.gradle,Android,Gradle,Android Studio,Android Gradle Plugin,Build.gradle,在Android Studio中,我在build.gradle中有关于应用程序版本的默认信息: android { defaultConfig { versionCode 24 versionName "0.1 beta" } } 如何在每个项目编译时自动增加versionCode?引用: 由于android:versionCode是一个单调递增的整数, 自动化它的一种方法是在每次构建时简单地增加它。 虽然这可能看起来很浪费,但20亿次构

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

android {    
    defaultConfig {
        versionCode 24
        versionName "0.1 beta"
    }
}
如何在每个项目编译时自动增加
versionCode

引用:

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

示例项目使用
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
当然,这个脚本的一个更健壮的实现可以处理这种情况,并且 为开发人员提供起始值

然后,脚本使用“读取自定义属性”逻辑 在前面的章节中,[注:本书的,不包括在这里]阅读现有的 价值但它将旧值增加1,以获得要使用的新代码。 修改后的代码将被写回它之前的属性文件 在
defaultConfig
块中应用

在这种情况下,脚本抛出一个
GradleException
,如果 找不到
version.properties
文件,或者找不到其他文件
阅读。

要添加到Commonware的答案中,如果您得到“无法读取版本.属性!”,请在
您的\u项目/app/version.properties
中手动创建一个。