Created
February 9, 2019 17:01
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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