【发布时间】:2018-03-19 07:42:32
【问题描述】:
应用程序的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时执行任务,我该怎么办?
【问题讨论】: