在Android中,我在build.gradle中有关于应用程序版本的默认信息:
android {
defaultConfig {
versionCode 24
versionName "0.1 beta"
}
}如何在每个项目编译时自动增加versionCode?
发布于 2014-02-24 11:10:29
引用my book
由于android:versionCode是一个单调递增的整数,因此自动化它的一种方法是在每次构建时简单地增加它。虽然这看起来很浪费,但是20亿的构建是大量的构建,所以一个单独的开发人员不太可能耗尽。跨团队同步这样的versionCode值将变得更加复杂,但是对于单个案例(开发人员、构建服务器等),使用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当然,这个脚本的更健壮的实现将处理这种情况,并为开发人员提供一个初始值。
然后,该脚本使用前面的注释中所示的读取自定义属性逻辑:书中未包括的读取现有值.但是,它会将旧值增加1,以获得使用新代码。然后将修改后的代码写回属性文件,然后应用到defaultConfig块中。
在这种情况下,如果无法找到或无法读取GradleException文件,脚本将抛出一个version.properties以停止构建。
https://stackoverflow.com/questions/21985496
复制相似问题