Skip to content

Instantly share code, notes, and snippets.

@carloscuesta
Created September 3, 2017 08:58
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save carloscuesta/678668da906bb80bdd22c8fd690c4fc4 to your computer and use it in GitHub Desktop.
Save carloscuesta/678668da906bb80bdd22c8fd690c4fc4 to your computer and use it in GitHub Desktop.
Increment versionCode task
task('incrementVersionCode') << {
def versionCode = Integer.parseInt(VERSION_CODE) + 1
ant.propertyfile(file: "../gradle.properties") {
entry(key: "VERSION_CODE", value: versionCode)
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.dependsOn 'incrementVersionCode'
}
}
@guyzmo
Copy link

guyzmo commented Dec 30, 2017

well, simply replace as it states:

task('incrementVersionCode').doLast {
 // …
}

I tried that and the warning is gone, but I haven't checked the release version bump still works yet.

@carloscuesta
Copy link
Author

Update to this Gist since now I used it in a different way.

The versionCode.gradle remains the same, but now I do not use a whenTaskAdded hook, instead I fire this gradle task through Fastlane

 gradle(task: 'incrementVersionCode', project_dir: 'android/')
task('incrementVersionCode') << {
    def versionCode = Integer.parseInt(VERSION_CODE) + 1
    ant.propertyfile(file: "../gradle.properties") {
        entry(key: "VERSION_CODE", value: versionCode)
    }
}

@kii-dot
Copy link

kii-dot commented Nov 9, 2018

Where should I put the VERSION_CODE variable?

@frozenzia
Copy link

Where should I put the VERSION_CODE variable?

You'll want to put that in gradle.properties. (At least that's what I did and got it working - can't claim to be a gradle guru at this point, so perhaps Carlos had some other idea in mind, but my understanding is that any variables in gradle.properties are available for you to use in build.gradle.

I was wanting to both increment my build number AND update my version number. In my case I'm going to pass the new version number in as a parameter, so I've done this:

sample fastlane call: fastlane update_android_versions newVersion:5.2.8 (newVersion passed as parameter)

fastfile:

desc "Update Android version numbers"
lane :update_android_versions do |options|
    # Android update version numbers
    gradle(
        task: "updateVersion",
        project_dir: "./android",
        properties: { "version_number" => options[:newVersion] }
    )
end

This ends up creating a call like this: bla bla path.../android/gradlew updateVersion -p ./android -Pversion_number=5.2.8

gradle.properties:

VERSION_CODE=23  # (gets changed to 24)
VERSION_NAME=3.0.6  # (gets changed to 5.2.8)

updateVersion.gradle:

task('updateVersion') << {
    def versionCode = Integer.parseInt(VERSION_CODE) + 1
    def versionName = version_number
    ant.propertyfile(file: "../gradle.properties") {
        entry(key: "VERSION_CODE", value: versionCode)
        entry(key: "VERSION_NAME", value: versionName)
    }
}

build.gradle:

versionCode Integer.parseInt(VERSION_CODE)
versionName VERSION_NAME

@ko-lem
Copy link

ko-lem commented Jan 26, 2019

In my case, I just placed the task at the bottom of the build.gradle file.

build.gradle

...

android {
    ...

    defaultConfig {
        ...
        versionCode Integer.parseInt(VERSION_CODE)
        ...
    }

    ...
}

...

task('incrementVersionCode') << {
    def versionCode = Integer.parseInt(VERSION_CODE) + 1
    ant.propertyfile(file: "../gradle.properties") {
        entry(key: "VERSION_CODE", value: versionCode)
    }
}

gradle.properties

...
VERSION_CODE=1 # this will get updated

Fastfile

...

gradle(
  task: "incrementVersionCode",
  project_dir: "android/"
)

git_commit(
  path: "android/gradle.properties",
  message: "Version Bump"
)
...

Thanks all!

@aldrinc
Copy link

aldrinc commented Jul 14, 2019

Update: July 2019

">>" is deprecated and removed and the following syntax is favored for versionCode.gradle:

  1. Create a new file called versionCode.gradle in android/app with the code below
task('incrementVersionCode') {
    description= "Increments Version Code"
    doLast {
        def versionCode = Integer.parseInt(VERSION_CODE) + 1
        ant.propertyfile(file: "../gradle.properties") {
            entry(key: "VERSION_CODE", value: versionCode)
        }
    }
}

  1. Open android/app/build.gradle and add the following line: apply from: './versionCode.gradle'

Replace the versionCode line under default config in your app's build.gradle with:

    defaultConfig {
        ...
        versionCode 1  # Replace with versionCode Integer.parseInt(VERSION_CODE)
        ...
    }

  1. Add VERSION_CODE=1 to your gradle.properties file.
  2. Build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment