0d569bea5d
Configure the gradle builds to sign and build the release version of the Godot Android Editor
140 lines
4.2 KiB
Groovy
140 lines
4.2 KiB
Groovy
// Gradle build config for Godot Engine's Android port.
|
|
plugins {
|
|
id 'com.android.application'
|
|
id 'org.jetbrains.kotlin.android'
|
|
}
|
|
|
|
dependencies {
|
|
implementation libraries.kotlinStdLib
|
|
implementation libraries.androidxFragment
|
|
implementation project(":lib")
|
|
|
|
implementation "androidx.window:window:1.0.0"
|
|
}
|
|
|
|
ext {
|
|
// Retrieve the build number from the environment variable; default to 0 if none is specified.
|
|
// The build number is added as a suffix to the version code for upload to the Google Play store.
|
|
getEditorBuildNumber = { ->
|
|
int buildNumber = 0
|
|
String versionStatus = System.getenv("GODOT_VERSION_STATUS")
|
|
if (versionStatus != null && !versionStatus.isEmpty()) {
|
|
try {
|
|
buildNumber = Integer.parseInt(versionStatus.replaceAll("[^0-9]", ""));
|
|
} catch (NumberFormatException ignored) {
|
|
buildNumber = 0
|
|
}
|
|
}
|
|
|
|
return buildNumber
|
|
}
|
|
// Value by which the Godot version code should be offset by to make room for the build number
|
|
editorBuildNumberOffset = 100
|
|
|
|
// Return the keystore file used for signing the release build.
|
|
getGodotKeystoreFile = { ->
|
|
def keyStore = System.getenv("GODOT_ANDROID_SIGN_KEYSTORE")
|
|
if (keyStore == null) {
|
|
return null
|
|
}
|
|
return file(keyStore)
|
|
}
|
|
|
|
// Return the key alias used for signing the release build.
|
|
getGodotKeyAlias = { ->
|
|
def kAlias = System.getenv("GODOT_ANDROID_KEYSTORE_ALIAS")
|
|
return kAlias
|
|
}
|
|
|
|
// Return the password for the key used for signing the release build.
|
|
getGodotSigningPassword = { ->
|
|
def signingPassword = System.getenv("GODOT_ANDROID_SIGN_PASSWORD")
|
|
return signingPassword
|
|
}
|
|
|
|
// Returns true if the environment variables contains the configuration for signing the release
|
|
// build.
|
|
hasReleaseSigningConfigs = { ->
|
|
def keystoreFile = getGodotKeystoreFile()
|
|
def keyAlias = getGodotKeyAlias()
|
|
def signingPassword = getGodotSigningPassword()
|
|
|
|
return keystoreFile != null && keystoreFile.isFile()
|
|
&& keyAlias != null && !keyAlias.isEmpty()
|
|
&& signingPassword != null && !signingPassword.isEmpty()
|
|
}
|
|
}
|
|
|
|
def generateVersionCode() {
|
|
int libraryVersionCode = getGodotLibraryVersionCode()
|
|
return (libraryVersionCode * editorBuildNumberOffset) + getEditorBuildNumber()
|
|
}
|
|
|
|
def generateVersionName() {
|
|
String libraryVersionName = getGodotLibraryVersionName()
|
|
int buildNumber = getEditorBuildNumber()
|
|
return buildNumber == 0 ? libraryVersionName : libraryVersionName + ".$buildNumber"
|
|
}
|
|
|
|
android {
|
|
compileSdkVersion versions.compileSdk
|
|
buildToolsVersion versions.buildTools
|
|
ndkVersion versions.ndkVersion
|
|
|
|
defaultConfig {
|
|
// The 'applicationId' suffix allows to install Godot 3.x(v3) and 4.x(v4) on the same device
|
|
applicationId "org.godotengine.editor.v4"
|
|
versionCode generateVersionCode()
|
|
versionName generateVersionName()
|
|
minSdkVersion versions.minSdk
|
|
targetSdkVersion versions.targetSdk
|
|
|
|
missingDimensionStrategy 'products', 'editor'
|
|
setProperty("archivesBaseName", "android_editor")
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility versions.javaVersion
|
|
targetCompatibility versions.javaVersion
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = versions.javaVersion
|
|
}
|
|
|
|
signingConfigs {
|
|
release {
|
|
storeFile getGodotKeystoreFile()
|
|
storePassword getGodotSigningPassword()
|
|
keyAlias getGodotKeyAlias()
|
|
keyPassword getGodotSigningPassword()
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
dev {
|
|
initWith debug
|
|
applicationIdSuffix ".dev"
|
|
}
|
|
|
|
debug {
|
|
initWith release
|
|
applicationIdSuffix ".debug"
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
|
|
release {
|
|
if (hasReleaseSigningConfigs()) {
|
|
signingConfig signingConfigs.release
|
|
}
|
|
}
|
|
}
|
|
|
|
packagingOptions {
|
|
// 'doNotStrip' is enabled for development within Android Studio
|
|
if (shouldNotStrip()) {
|
|
doNotStrip '**/*.so'
|
|
}
|
|
}
|
|
}
|