Today a colleague of mine pointed me to grgit (a wrapper over jGit) when asked about how to deal with Android versionCode
.
Version Your App is a critical component of your app upgrade and maintenance strategy.
Doing so manually is error prone and cumbersome.
Moritz told me to have a look at build.gradle
used to build Android Calendar Widget.
The essential parts are backed by grgit
the library mentioned above:
buildscript {
...
dependencies {
classpath 'org.ajoberstar:grgit:1.9.2'
}
}
Two convenient methods generate a monotonious increasing number and a short hash of the current commit:
static getVersionCodeInteger() {
try {
def git = org.ajoberstar.grgit.Grgit.open()
def versionCode = git.log().size()
git.close()
return versionCode
} catch (ignored) {
return 1
}
}
static getVersionNameExtension() {
try {
def git = org.ajoberstar.grgit.Grgit.open()
def versionNameSuffix = "-${git.head().getAbbreviatedId(8)}"
git.close()
return versionNameSuffix
} catch (ignored) {
return ""
}
}
This two functions are used within the defaultConfig
of our Android app:
android {
...
defaultConfig {
versionName '0.4.4' + getVersionNameExtension()
versionCode getVersionCodeInteger()
...
}
}
We always have the commit hash coded into the versionName
to identify every version available in the wild
and an automagically generated versionCode
.