Hello.
I have implemented autoincrement app version feature in my root build.gradle
I have 3 release tasks (suppose the base version is 1.0.3):
release - update version to 2.0.0 and create release apk
releaseBeta - update version to 1.1.0 and create release apk
releaseNightly - update version to 1.0.4 and create release apk
Everything worked fine with gradle 1.12 and 0.12.+ plugin.
After switching to new gradle 2.2.1 and 1.0.0 plugin the problem occurred:
new apks have old version
Please help me to understand what's wrong with it.
Here is my code:
- VersionUtils is just helper class to operate with version strings
import java.util.regex.Matcher
import java.util.regex.Pattern
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:1.0.0"
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
ext {
deliveryDir = 'delivery'
appVersion = new Version(project: this, subprojects: subprojects,
versionName: versionName)
}
subprojects {
repositories {
jcenter()
}
}
subprojects.each { subproject ->
subproject.configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
}
evaluationDependsOn(subproject.path)
}
subprojects.findAll { project -> project.hasProperty('android') && project.
android.hasProperty('applicationVariants') }.each { project ->
def deliverToLocal = task("deliverToLocal_${project.name}") {
ext.outputDir = "${deliveryDir}/${project.name}"
description = "Deliver ${project.name} binaries to ${outputDir}
folder"
dependsOn project.assembleRelease
doLast {
deliverBinariesFor project, outputDir
}
}
task("release_${project.name}", dependsOn: deliverToLocal) << {
description = "Release ${project.name} application"
}
}
task clearDeliveryDir << {
delete deliveryDir
delete 'build'
}
def deliverBinariesFor(def project, def outputDir) {
project.android.applicationVariants.all { variant ->
copy {
variant.outputs.each { output ->
from output.outputFile
}
from "${project.buildDir}/outputs/proguard/release/mapping.txt"
from
"${project.buildDir}/outputs/lint-results-release-fatal.html"
into outputDir
}
copy {
from("${project.buildDir}/outputs") {
include 'lint-results*_files/*.css'
include 'lint-results*_files/*.png'
}
into "${outputDir}/lint-result-release-fatal"
}
}
}
task deliverToExternal(dependsOn: [tasks.findAll { task -> task.name.
startsWith('release_') }]) << {}
//---------------release app---------------------------
task increaseMajorVersion << {
appVersion.increaseMajor()
}
task increaseBetaVersion << {
appVersion.increaseBeta()
}
task increaseNightlyVersion << {
appVersion.increaseNightly()
}
task saveVersion << {
appVersion.save()
}
clearDeliveryDir.mustRunAfter increaseMajorVersion
clearDeliveryDir.mustRunAfter increaseBetaVersion
clearDeliveryDir.mustRunAfter increaseNightlyVersion
deliverToExternal.mustRunAfter clearDeliveryDir
saveVersion.mustRunAfter deliverToExternal
task releaseMajor(dependsOn: [increaseMajorVersion, clearDeliveryDir,
deliverToExternal, saveVersion]) {
description 'Release a new version of application, create tag and
increase version'
doLast {
println "${appVersion} released"
}
}
task releaseBeta(dependsOn: [increaseBetaVersion, clearDeliveryDir,
deliverToExternal, saveVersion]) {
description 'Release a new version of application, create tag and
increase version'
doLast {
println "${appVersion} released"
}
}
task releaseNightly(dependsOn: [increaseNightlyVersion, clearDeliveryDir,
deliverToExternal, saveVersion]) {
description 'Release a new version of application, create tag and
increase version'
doLast {
println "${appVersion} released"
}
}
//-------------------Utils----------------
class Version {
def project
def subprojects
String versionName
boolean release
String toString() { return VersionUtils.toString(versionName) }
Version increaseMajor() { versionName = VersionUtils.increaseMajor(
versionName); apply(); this }
Version increaseBeta() { versionName = VersionUtils.increaseBeta(
versionName); apply(); this }
Version increaseNightly() { versionName = VersionUtils.increaseNightly(
versionName); apply(); this }
void apply() {
subprojects.findAll { project -> project.hasProperty('android') &&
project.android.hasProperty('applicationVariants') }.each { project ->
project.android.defaultConfig.versionName = this.toString()
project.android.defaultConfig.versionCode = VersionUtils.
makeVersionCode(this.toString(), project.android.defaultConfig.minSdkVersion
.mApiLevel as int)
println "${product.name} versionName =
${project.android.defaultConfig.versionName}, versionCode =
${project.android.defaultConfig.versionCode}"
}
}
void save() {
project.ant.propertyfile(file: 'gradle.properties') {
entry(key: "versionName", value: versionName)
}
project.ant.replaceregexp(file: 'gradle.properties', match: /^#[^
].*\s*/, replace: "", flags: "g")
}
}
--
You received this message because you are subscribed to the Google Groups
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.