当发布新版本时自动递增 versionCode
需求
versionCode
是android
应用内部用来识别版本,判断新旧用的, 希望每次发布新版本时能够自动化的自增,避免人工修改可能带来的问题
更好的做法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.regex.Pattern
task('increaseVersionCode') << {
def buildFile = file("build.gradle")
def pattern = Pattern.compile("versionCode\\s+(\\d+)")
def manifestText = buildFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def versionCode = Integer.parseInt(matcher.group(1))
def manifestContent = matcher.replaceAll("versionCode " + ++versionCode)
buildFile.write(manifestContent)
}
tasks.whenTaskAdded { task ->
if (task.name.matches('assemble.*?Release')) {
task.dependsOn 'increaseVersionCode'
}
}
这样就实现了每次发布新版本时,自动递增versionCode
, 比普通做法的好处是,无需增加另外的文件, 更简便
普通做法
将versionCode
放在一个文件里,每次发布新版本时,读取这个值,递增一次,最后再写回这个文件 具体代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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!")
}
参考链接
本文由作者按照 CC BY 4.0 进行授权
Comments powered by Disqus.