应用程序的VersionName
类似于' major.minor.patch'。我需要在每次组装.apk时自动添加补丁号。例如,在执行gradlew assemble
或gradlew assembleRelease
之后,我们假设版本名称为“1.0.1”,我希望版本名称更改为' 1.0。 2&#39 ;.
因此,我在/ 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
时执行任务,我该怎么办?
答案 0 :(得分:1)
我是如此愚蠢,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')
}
它对我有用。