Increase Code version by one. Automatically after package execution.

I have the following in the android build.gradle tag to increase versionCode:

apply plugin: 'com.android.library' android { compileSdkVersion 22 buildToolsVersion "22.0.1" def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) List<String> runTasks = gradle.startParameter.getTaskNames(); def value = 0 for (String item : runTasks) if (item.contains("packageReleaseJar")) { value = 1; } def code = versionProps['VERSION_CODE'].toInteger() + value versionProps['VERSION_CODE'] = code.toString() versionProps.store(versionPropsFile.newWriter(), null) defaultConfig { minSdkVersion 8 targetSdkVersion 22 versionCode code versionName version testApplicationId 'se.android.instrumenttest' testInstrumentationRunner 'se.android.Runner' printf("\n--------" + "VERSION DATA--------" + "\n" + "- CODE: " + versionCode + "\n" + "- NAME: " + versionName + "\n----------------------------\n") } } else { throw new GradleException("Could not read version.properties!") } 

An idea taken from a pattern matching .

I expect that when I execute the packageReleaseJar task using the Gradle shell, versionCode is incremented by one. But it does not work as expected.

I think this may be due to the generateReleaseBuildConfig task.

What could be the reason and why is this solution?

Addenda

 def getVersionCode() { def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) def code = versionProps['VERSION_CODE'].toInteger() } else { throw new GradleException("Could not read version.properties!") } return code } 

This method does not work as expected, but when using the method logic in the android tag, the problem will be solved:

 def versionPropsFile = file('version.properties') if (versionPropsFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionPropsFile)) def code = versionProps['VERSION_CODE'].toInteger() defaultConfig { minSdkVersion 8 targetSdkVersion 22 versionCode code versionName version testApplicationId 'se.android.instrumenttest' testInstrumentationRunner 'se.android.Runner' printf("\n--------" + "VERSION DATA--------\n" + "- CODE: " + versionCode + "\n" + "- NAME: " + versionName + "\n----------------------------\n") } } else { throw new GradleException("Could not read version.properties!") } 
+5
source share

All Articles