2019-09-03 02:31:51 +02:00
|
|
|
// Gradle build config for Godot Engine's Android port.
|
|
|
|
buildscript {
|
|
|
|
apply from: 'config.gradle'
|
|
|
|
|
|
|
|
repositories {
|
|
|
|
google()
|
2021-06-24 08:49:18 +02:00
|
|
|
mavenCentral()
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
dependencies {
|
|
|
|
classpath libraries.androidGradlePlugin
|
2020-02-25 17:18:36 +01:00
|
|
|
classpath libraries.kotlinGradlePlugin
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-05-31 20:10:15 +02:00
|
|
|
plugins {
|
|
|
|
id 'com.android.application'
|
|
|
|
id 'org.jetbrains.kotlin.android'
|
|
|
|
}
|
|
|
|
|
|
|
|
apply from: 'config.gradle'
|
2019-09-03 02:31:51 +02:00
|
|
|
|
|
|
|
allprojects {
|
|
|
|
repositories {
|
|
|
|
google()
|
2021-06-24 08:49:18 +02:00
|
|
|
mavenCentral()
|
2020-04-24 09:45:14 +02:00
|
|
|
|
|
|
|
// Godot user plugins custom maven repos
|
|
|
|
String[] mavenRepos = getGodotPluginsMavenRepos()
|
|
|
|
if (mavenRepos != null && mavenRepos.size() > 0) {
|
|
|
|
for (String repoUrl : mavenRepos) {
|
|
|
|
maven {
|
|
|
|
url repoUrl
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-25 15:45:16 +02:00
|
|
|
configurations {
|
|
|
|
// Initializes a placeholder for the devImplementation dependency configuration.
|
|
|
|
devImplementation {}
|
|
|
|
}
|
|
|
|
|
2019-09-03 02:31:51 +02:00
|
|
|
dependencies {
|
2020-02-25 17:18:36 +01:00
|
|
|
implementation libraries.kotlinStdLib
|
2021-08-31 12:02:59 +02:00
|
|
|
implementation libraries.androidxFragment
|
2020-01-27 18:56:27 +01:00
|
|
|
|
2019-09-03 02:31:51 +02:00
|
|
|
if (rootProject.findProject(":lib")) {
|
|
|
|
implementation project(":lib")
|
2019-10-18 18:59:04 +02:00
|
|
|
} else if (rootProject.findProject(":godot:lib")) {
|
|
|
|
implementation project(":godot:lib")
|
2019-09-03 02:31:51 +02:00
|
|
|
} else {
|
2023-02-02 00:17:06 +01:00
|
|
|
// Godot gradle build mode. In this scenario this project is the only one around and the Godot
|
2019-09-03 02:31:51 +02:00
|
|
|
// library is available through the pre-generated godot-lib.*.aar android archive files.
|
|
|
|
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar', '*.aar'])
|
2021-06-25 15:45:16 +02:00
|
|
|
devImplementation fileTree(dir: 'libs/dev', include: ['*.jar', '*.aar'])
|
2019-09-03 02:31:51 +02:00
|
|
|
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar', '*.aar'])
|
|
|
|
}
|
2019-10-18 18:59:04 +02:00
|
|
|
|
2020-04-24 09:45:14 +02:00
|
|
|
// Godot user plugins remote dependencies
|
|
|
|
String[] remoteDeps = getGodotPluginsRemoteBinaries()
|
|
|
|
if (remoteDeps != null && remoteDeps.size() > 0) {
|
|
|
|
for (String dep : remoteDeps) {
|
|
|
|
implementation dep
|
|
|
|
}
|
|
|
|
}
|
2019-10-18 18:59:04 +02:00
|
|
|
|
2020-04-24 09:45:14 +02:00
|
|
|
// Godot user plugins local dependencies
|
|
|
|
String[] pluginsBinaries = getGodotPluginsLocalBinaries()
|
|
|
|
if (pluginsBinaries != null && pluginsBinaries.size() > 0) {
|
|
|
|
implementation files(pluginsBinaries)
|
2019-10-18 18:59:04 +02:00
|
|
|
}
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
android {
|
|
|
|
compileSdkVersion versions.compileSdk
|
|
|
|
buildToolsVersion versions.buildTools
|
2021-06-25 15:45:16 +02:00
|
|
|
ndkVersion versions.ndkVersion
|
2019-09-03 02:31:51 +02:00
|
|
|
|
2020-03-23 17:41:16 +01:00
|
|
|
compileOptions {
|
2020-10-29 00:32:45 +01:00
|
|
|
sourceCompatibility versions.javaVersion
|
|
|
|
targetCompatibility versions.javaVersion
|
2020-03-23 17:41:16 +01:00
|
|
|
}
|
|
|
|
|
2022-05-31 20:10:15 +02:00
|
|
|
kotlinOptions {
|
|
|
|
jvmTarget = versions.javaVersion
|
|
|
|
}
|
|
|
|
|
2021-09-10 04:55:42 +02:00
|
|
|
assetPacks = [":assetPacks:installTime"]
|
|
|
|
|
2019-09-03 02:31:51 +02:00
|
|
|
defaultConfig {
|
2020-05-25 21:03:35 +02:00
|
|
|
// The default ignore pattern for the 'assets' directory includes hidden files and directories which are used by Godot projects.
|
|
|
|
aaptOptions {
|
2021-03-10 09:14:57 +01:00
|
|
|
ignoreAssetsPattern "!.svn:!.git:!.gitignore:!.ds_store:!*.scc:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
|
2020-05-25 21:03:35 +02:00
|
|
|
}
|
|
|
|
|
2020-07-31 22:48:08 +02:00
|
|
|
ndk {
|
|
|
|
String[] export_abi_list = getExportEnabledABIs()
|
|
|
|
abiFilters export_abi_list
|
|
|
|
}
|
|
|
|
|
2021-02-24 12:49:00 +01:00
|
|
|
manifestPlaceholders = [godotEditorVersion: getGodotEditorVersion()]
|
|
|
|
|
2019-09-03 02:31:51 +02:00
|
|
|
// Feel free to modify the application id to your own.
|
2019-12-13 01:52:57 +01:00
|
|
|
applicationId getExportPackageName()
|
2020-07-23 18:16:03 +02:00
|
|
|
versionCode getExportVersionCode()
|
|
|
|
versionName getExportVersionName()
|
2021-12-07 23:38:33 +01:00
|
|
|
minSdkVersion getExportMinSdkVersion()
|
|
|
|
targetSdkVersion getExportTargetSdkVersion()
|
2021-06-25 15:45:16 +02:00
|
|
|
|
|
|
|
missingDimensionStrategy 'products', 'template'
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
lintOptions {
|
|
|
|
abortOnError false
|
|
|
|
disable 'MissingTranslation', 'UnusedResources'
|
|
|
|
}
|
|
|
|
|
2021-01-05 22:40:42 +01:00
|
|
|
ndkVersion versions.ndkVersion
|
|
|
|
|
2019-09-03 02:31:51 +02:00
|
|
|
packagingOptions {
|
|
|
|
exclude 'META-INF/LICENSE'
|
|
|
|
exclude 'META-INF/NOTICE'
|
2020-04-23 09:21:39 +02:00
|
|
|
|
2021-03-10 09:14:57 +01:00
|
|
|
// 'doNotStrip' is enabled for development within Android Studio
|
|
|
|
if (shouldNotStrip()) {
|
|
|
|
doNotStrip '**/*.so'
|
|
|
|
}
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
|
2020-11-21 23:09:33 +01:00
|
|
|
signingConfigs {
|
2021-06-07 18:19:18 +02:00
|
|
|
debug {
|
|
|
|
if (hasCustomDebugKeystore()) {
|
|
|
|
storeFile new File(getDebugKeystoreFile())
|
|
|
|
storePassword getDebugKeystorePassword()
|
|
|
|
keyAlias getDebugKeyAlias()
|
|
|
|
keyPassword getDebugKeystorePassword()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-21 23:09:33 +01:00
|
|
|
release {
|
|
|
|
File keystoreFile = new File(getReleaseKeystoreFile())
|
|
|
|
if (keystoreFile.isFile()) {
|
|
|
|
storeFile keystoreFile
|
|
|
|
storePassword getReleaseKeystorePassword()
|
|
|
|
keyAlias getReleaseKeyAlias()
|
|
|
|
keyPassword getReleaseKeystorePassword()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
buildTypes {
|
|
|
|
|
|
|
|
debug {
|
|
|
|
// Signing and zip-aligning are skipped for prebuilt builds, but
|
2023-02-02 00:17:06 +01:00
|
|
|
// performed for Godot gradle builds.
|
2020-11-21 23:09:33 +01:00
|
|
|
zipAlignEnabled shouldZipAlign()
|
|
|
|
if (shouldSign()) {
|
|
|
|
signingConfig signingConfigs.debug
|
|
|
|
} else {
|
|
|
|
signingConfig null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-25 15:45:16 +02:00
|
|
|
dev {
|
|
|
|
initWith debug
|
|
|
|
// Signing and zip-aligning are skipped for prebuilt builds, but
|
2023-02-02 00:17:06 +01:00
|
|
|
// performed for Godot gradle builds.
|
2021-06-25 15:45:16 +02:00
|
|
|
zipAlignEnabled shouldZipAlign()
|
|
|
|
if (shouldSign()) {
|
|
|
|
signingConfig signingConfigs.debug
|
|
|
|
} else {
|
|
|
|
signingConfig null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-21 23:09:33 +01:00
|
|
|
release {
|
|
|
|
// Signing and zip-aligning are skipped for prebuilt builds, but
|
2023-02-02 00:17:06 +01:00
|
|
|
// performed for Godot gradle builds.
|
2020-11-21 23:09:33 +01:00
|
|
|
zipAlignEnabled shouldZipAlign()
|
|
|
|
if (shouldSign()) {
|
|
|
|
signingConfig signingConfigs.release
|
|
|
|
} else {
|
|
|
|
signingConfig null
|
|
|
|
}
|
|
|
|
}
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
sourceSets {
|
|
|
|
main {
|
|
|
|
manifest.srcFile 'AndroidManifest.xml'
|
2019-10-18 18:59:04 +02:00
|
|
|
java.srcDirs = ['src']
|
|
|
|
res.srcDirs = ['res']
|
|
|
|
aidl.srcDirs = ['aidl']
|
|
|
|
assets.srcDirs = ['assets']
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
2021-03-22 18:38:25 +01:00
|
|
|
debug.jniLibs.srcDirs = ['libs/debug', 'libs/debug/vulkan_validation_layers']
|
2021-06-25 15:45:16 +02:00
|
|
|
dev.jniLibs.srcDirs = ['libs/dev']
|
2019-10-18 18:59:04 +02:00
|
|
|
release.jniLibs.srcDirs = ['libs/release']
|
2019-09-03 02:31:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
applicationVariants.all { variant ->
|
|
|
|
variant.outputs.all { output ->
|
|
|
|
output.outputFileName = "android_${variant.name}.apk"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-07-31 22:48:08 +02:00
|
|
|
|
|
|
|
task copyAndRenameDebugApk(type: Copy) {
|
|
|
|
from "$buildDir/outputs/apk/debug/android_debug.apk"
|
|
|
|
into getExportPath()
|
|
|
|
rename "android_debug.apk", getExportFilename()
|
|
|
|
}
|
|
|
|
|
2021-06-25 15:45:16 +02:00
|
|
|
task copyAndRenameDevApk(type: Copy) {
|
|
|
|
from "$buildDir/outputs/apk/dev/android_dev.apk"
|
|
|
|
into getExportPath()
|
|
|
|
rename "android_dev.apk", getExportFilename()
|
|
|
|
}
|
|
|
|
|
2020-07-31 22:48:08 +02:00
|
|
|
task copyAndRenameReleaseApk(type: Copy) {
|
|
|
|
from "$buildDir/outputs/apk/release/android_release.apk"
|
|
|
|
into getExportPath()
|
|
|
|
rename "android_release.apk", getExportFilename()
|
|
|
|
}
|
|
|
|
|
|
|
|
task copyAndRenameDebugAab(type: Copy) {
|
|
|
|
from "$buildDir/outputs/bundle/debug/build-debug.aab"
|
|
|
|
into getExportPath()
|
|
|
|
rename "build-debug.aab", getExportFilename()
|
|
|
|
}
|
|
|
|
|
2021-06-25 15:45:16 +02:00
|
|
|
task copyAndRenameDevAab(type: Copy) {
|
|
|
|
from "$buildDir/outputs/bundle/dev/build-dev.aab"
|
|
|
|
into getExportPath()
|
|
|
|
rename "build-dev.aab", getExportFilename()
|
|
|
|
}
|
|
|
|
|
2020-07-31 22:48:08 +02:00
|
|
|
task copyAndRenameReleaseAab(type: Copy) {
|
|
|
|
from "$buildDir/outputs/bundle/release/build-release.aab"
|
|
|
|
into getExportPath()
|
|
|
|
rename "build-release.aab", getExportFilename()
|
|
|
|
}
|