mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 10:11:57 +03:00
Configure the gradle builds to sign and build the release version of the Godot Android Editor
(cherry picked from commit 0d569bea5d)
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'
|
|
}
|
|
}
|
|
}
|