Skip to content

Instantly share code, notes, and snippets.

@sveinungkb
Created February 9, 2019 17:01
Show Gist options
  • Save sveinungkb/ed1c5a3c5811fd24f246bd607df07d26 to your computer and use it in GitHub Desktop.
Save sveinungkb/ed1c5a3c5811fd24f246bd607df07d26 to your computer and use it in GitHub Desktop.
Gradle tasks and classes to read Android version (versionName, versionCode) from properties and store an incremented build number
android{
defaultConfig {
...
versionCode readVersion().versionCode()
versionName readVersion().versionName()
....
class Version {
Integer major
Integer minor
Integer build
Version(version) {
this.major = Integer.parseInt(version.getProperty('version.major'))
this.minor = Integer.parseInt(version.getProperty('version.minor'))
this.build = Integer.parseInt(version.getProperty('version.build'))
if (this.minor > 100) {
throw new IllegalArgumentException("version.minor has to be below 100, was: " + this.minor)
}
}
def String versionName() {
return String.format("%d.%d.%d", major, minor, build)
}
def Integer versionCode() {
return major * 1000000 + minor * 10000 + build
}
def incrementBuild() {
build++
}
def write(File out) {
Properties properties = new Properties()
properties.setProperty('version.major', major.toString())
properties.setProperty('version.minor', minor.toString())
properties.setProperty('version.build', build.toString())
properties.store(out.newWriter(), null)
}
@Override
public String toString() {
return "Version{" +
versionName() + "/" + versionCode() +
", major=" + major +
", minor=" + minor +
", build=" + build +
'}';
}
}
def Version readVersion() {
Properties properties = new Properties()
properties.load(project.file('version.properties').newDataInputStream())
def version = new Version(properties)
logger.debug("Loaded version: " + version + " from version.properties)
return version
}
task incrementBuildNumber << {
Version version = readVersion()
version.incrementBuild()
version.write(project.file('version.properties'))
logger.debug("Increment version and stored to version.properties: " + version)
}
version.major=0
version.minor=1
version.build=100
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment