Update the versioning logic for the Godot Android Editor

This is necessary to separate subsequent uploads to the Google Play store as each upload needs to increment the version code.
This commit is contained in:
Fredia Huya-Kouadio 2022-09-11 21:33:17 -07:00
parent 13d99d1676
commit f37390cbc5
2 changed files with 44 additions and 5 deletions

View File

@ -127,16 +127,36 @@ ext.generateGodotLibraryVersion = { List<String> requiredKeys ->
if (requiredKeys.empty) { if (requiredKeys.empty) {
libraryVersionName = map.values().join(".") libraryVersionName = map.values().join(".")
try { try {
if (map.containsKey("status")) {
int statusCode = 0
String statusValue = map["status"]
if (statusValue == null) {
statusCode = 0
} else if (statusValue.startsWith("alpha")) {
statusCode = 1
} else if (statusValue.startsWith("beta")) {
statusCode = 2
} else if (statusValue.startsWith("rc")) {
statusCode = 3
} else if (statusValue.startsWith("stable")) {
statusCode = 4
} else {
statusCode = 0
}
libraryVersionCode = statusCode
}
if (map.containsKey("patch")) { if (map.containsKey("patch")) {
libraryVersionCode = Integer.parseInt(map["patch"]) libraryVersionCode += Integer.parseInt(map["patch"]) * 10
} }
if (map.containsKey("minor")) { if (map.containsKey("minor")) {
libraryVersionCode += (Integer.parseInt(map["minor"]) * 100) libraryVersionCode += (Integer.parseInt(map["minor"]) * 1000)
} }
if (map.containsKey("major")) { if (map.containsKey("major")) {
libraryVersionCode += (Integer.parseInt(map["major"]) * 10000) libraryVersionCode += (Integer.parseInt(map["major"]) * 100000)
} }
} catch (NumberFormatException ignore) { } catch (NumberFormatException ignore) {
libraryVersionCode = 1 libraryVersionCode = 1

View File

@ -12,6 +12,25 @@ dependencies {
implementation "androidx.window:window:1.0.0" implementation "androidx.window:window:1.0.0"
} }
ext {
// Build number added as a suffix to the version code, and incremented for each build/upload to
// the Google Play store.
// This should be reset on each stable release of Godot.
editorBuildNumber = 0
// Value by which the Godot version code should be offset by to make room for the build number
editorBuildNumberOffset = 100
}
def generateVersionCode() {
int libraryVersionCode = getGodotLibraryVersionCode()
return (libraryVersionCode * editorBuildNumberOffset) + editorBuildNumber
}
def generateVersionName() {
String libraryVersionName = getGodotLibraryVersionName()
return libraryVersionName + ".$editorBuildNumber"
}
android { android {
compileSdkVersion versions.compileSdk compileSdkVersion versions.compileSdk
buildToolsVersion versions.buildTools buildToolsVersion versions.buildTools
@ -20,8 +39,8 @@ android {
defaultConfig { defaultConfig {
// The 'applicationId' suffix allows to install Godot 3.x(v3) and 4.x(v4) on the same device // The 'applicationId' suffix allows to install Godot 3.x(v3) and 4.x(v4) on the same device
applicationId "org.godotengine.editor.v3" applicationId "org.godotengine.editor.v3"
versionCode getGodotLibraryVersionCode() versionCode generateVersionCode()
versionName getGodotLibraryVersionName() versionName generateVersionName()
minSdkVersion versions.minSdk minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk targetSdkVersion versions.targetSdk