应用程序的VersionName
类似于“major.minor.patch”。每次组装.apk时,我都需要自动添加补丁号。例如,假设VersionName为'1.0.1',在执行gradlew assemble
或gradlew assembleRelease
之后,我希望VersionName更改为'1.0.2'。
因此,我在/ app中制作了一个version.properties
文件。
major=1
minor=0
patch=1
/ app中的build.gradle部分如下:
buildTypes {
debug {
testCoverageEnabled = true
applicationIdSuffix '.debug'
versionNameSuffix '-debug'
}
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
android.applicationVariants.all { variant ->
variant.outputs.all {
if (variant.buildType.name == 'release') {
def newName = variant.name + "_" + getCustomVersionName() + "_" + releaseTime + ".apk"
outputFileName = new File(newName)
}
}
}
}
最后,我定义一个依赖于assembleRelease任务的自定义任务。
task addVersionCode(dependsOn: 'assembleRelease') {
Properties versionProperties = new Properties()
versionProperties.load(project.file('version.properties').newInputStream())
def customNum = versionProperties.getProperty('custom')
versionProperties.setProperty('custom', ++customNum)
versionProperties.save(project.file('version.properties').newOutputStream(), 'add version code')
}
有用。但是每次我在终端中执行
gradlew assembleDebug
时。 addVersionCode
任务也将执行,并且VersionName
(version.properties文件中的补丁)也会增加。我不想要这个,我只想在执行gradlew assembleRelease
时执行任务,该怎么办? 最佳答案
我太笨了,addVersionCode
任务应该是执行任务,而不是配置任务。因此,只需更改定义任务的方法并添加doLast
即可。最后,添加了assembleRelease
任务作为依赖项。就像下面这样:
Task autoChangeVersionCode = task(autoChangeVersionCode, group: BasePlugin.BUILD_GROUP)
autoChangeVersionCode.doLast {
Properties versionProperties = new Properties()
versionProperties.load(project.file('version.properties').newInputStream())
def custom = versionProperties.getProperty('custom')
versionProperties.setProperty('custom', ++custom)
versionProperties.store(project.file('version.properties').newOutputStream(), 'increase version code')
}
这个对我有用。