244 lines
7.1 KiB
Groovy
244 lines
7.1 KiB
Groovy
|
// Gradle build config for Godot Engine's Android port.
|
||
|
buildscript {
|
||
|
apply from: 'config.gradle'
|
||
|
|
||
|
repositories {
|
||
|
google()
|
||
|
mavenCentral()
|
||
|
}
|
||
|
dependencies {
|
||
|
classpath libraries.androidGradlePlugin
|
||
|
classpath libraries.kotlinGradlePlugin
|
||
|
}
|
||
|
}
|
||
|
|
||
|
plugins {
|
||
|
id 'com.android.application'
|
||
|
id 'org.jetbrains.kotlin.android'
|
||
|
}
|
||
|
|
||
|
apply from: 'config.gradle'
|
||
|
|
||
|
allprojects {
|
||
|
repositories {
|
||
|
google()
|
||
|
mavenCentral()
|
||
|
|
||
|
// Godot user plugins custom maven repos
|
||
|
String[] mavenRepos = getGodotPluginsMavenRepos()
|
||
|
if (mavenRepos != null && mavenRepos.size() > 0) {
|
||
|
for (String repoUrl : mavenRepos) {
|
||
|
maven {
|
||
|
url repoUrl
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
configurations {
|
||
|
// Initializes a placeholder for the devImplementation dependency configuration.
|
||
|
devImplementation {}
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
implementation libraries.kotlinStdLib
|
||
|
implementation libraries.androidxFragment
|
||
|
|
||
|
if (rootProject.findProject(":lib")) {
|
||
|
implementation project(":lib")
|
||
|
} else if (rootProject.findProject(":godot:lib")) {
|
||
|
implementation project(":godot:lib")
|
||
|
} else {
|
||
|
// Godot gradle build mode. In this scenario this project is the only one around and the Godot
|
||
|
// library is available through the pre-generated godot-lib.*.aar android archive files.
|
||
|
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar', '*.aar'])
|
||
|
devImplementation fileTree(dir: 'libs/dev', include: ['*.jar', '*.aar'])
|
||
|
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar', '*.aar'])
|
||
|
}
|
||
|
|
||
|
// Godot user plugins remote dependencies
|
||
|
String[] remoteDeps = getGodotPluginsRemoteBinaries()
|
||
|
if (remoteDeps != null && remoteDeps.size() > 0) {
|
||
|
for (String dep : remoteDeps) {
|
||
|
implementation dep
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Godot user plugins local dependencies
|
||
|
String[] pluginsBinaries = getGodotPluginsLocalBinaries()
|
||
|
if (pluginsBinaries != null && pluginsBinaries.size() > 0) {
|
||
|
implementation files(pluginsBinaries)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
android {
|
||
|
compileSdkVersion versions.compileSdk
|
||
|
buildToolsVersion versions.buildTools
|
||
|
ndkVersion versions.ndkVersion
|
||
|
|
||
|
compileOptions {
|
||
|
sourceCompatibility versions.javaVersion
|
||
|
targetCompatibility versions.javaVersion
|
||
|
}
|
||
|
|
||
|
kotlinOptions {
|
||
|
jvmTarget = versions.javaVersion
|
||
|
}
|
||
|
|
||
|
assetPacks = [":assetPacks:installTime"]
|
||
|
|
||
|
defaultConfig {
|
||
|
// The default ignore pattern for the 'assets' directory includes hidden files and directories which are used by Godot projects.
|
||
|
aaptOptions {
|
||
|
ignoreAssetsPattern "!.svn:!.git:!.gitignore:!.ds_store:!*.scc:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||
|
}
|
||
|
|
||
|
ndk {
|
||
|
String[] export_abi_list = getExportEnabledABIs()
|
||
|
abiFilters export_abi_list
|
||
|
}
|
||
|
|
||
|
manifestPlaceholders = [godotEditorVersion: getGodotEditorVersion()]
|
||
|
|
||
|
// Feel free to modify the application id to your own.
|
||
|
applicationId getExportPackageName()
|
||
|
versionCode getExportVersionCode()
|
||
|
versionName getExportVersionName()
|
||
|
minSdkVersion getExportMinSdkVersion()
|
||
|
targetSdkVersion getExportTargetSdkVersion()
|
||
|
|
||
|
missingDimensionStrategy 'products', 'template'
|
||
|
}
|
||
|
|
||
|
lintOptions {
|
||
|
abortOnError false
|
||
|
disable 'MissingTranslation', 'UnusedResources'
|
||
|
}
|
||
|
|
||
|
ndkVersion versions.ndkVersion
|
||
|
|
||
|
packagingOptions {
|
||
|
exclude 'META-INF/LICENSE'
|
||
|
exclude 'META-INF/NOTICE'
|
||
|
|
||
|
// 'doNotStrip' is enabled for development within Android Studio
|
||
|
if (shouldNotStrip()) {
|
||
|
doNotStrip '**/*.so'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
signingConfigs {
|
||
|
debug {
|
||
|
if (hasCustomDebugKeystore()) {
|
||
|
storeFile new File(getDebugKeystoreFile())
|
||
|
storePassword getDebugKeystorePassword()
|
||
|
keyAlias getDebugKeyAlias()
|
||
|
keyPassword getDebugKeystorePassword()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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
|
||
|
// performed for Godot gradle builds.
|
||
|
zipAlignEnabled shouldZipAlign()
|
||
|
if (shouldSign()) {
|
||
|
signingConfig signingConfigs.debug
|
||
|
} else {
|
||
|
signingConfig null
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dev {
|
||
|
initWith debug
|
||
|
// Signing and zip-aligning are skipped for prebuilt builds, but
|
||
|
// performed for Godot gradle builds.
|
||
|
zipAlignEnabled shouldZipAlign()
|
||
|
if (shouldSign()) {
|
||
|
signingConfig signingConfigs.debug
|
||
|
} else {
|
||
|
signingConfig null
|
||
|
}
|
||
|
}
|
||
|
|
||
|
release {
|
||
|
// Signing and zip-aligning are skipped for prebuilt builds, but
|
||
|
// performed for Godot gradle builds.
|
||
|
zipAlignEnabled shouldZipAlign()
|
||
|
if (shouldSign()) {
|
||
|
signingConfig signingConfigs.release
|
||
|
} else {
|
||
|
signingConfig null
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sourceSets {
|
||
|
main {
|
||
|
manifest.srcFile 'AndroidManifest.xml'
|
||
|
java.srcDirs = ['src']
|
||
|
res.srcDirs = ['res']
|
||
|
aidl.srcDirs = ['aidl']
|
||
|
assets.srcDirs = ['assets']
|
||
|
}
|
||
|
debug.jniLibs.srcDirs = ['libs/debug', 'libs/debug/vulkan_validation_layers']
|
||
|
dev.jniLibs.srcDirs = ['libs/dev']
|
||
|
release.jniLibs.srcDirs = ['libs/release']
|
||
|
}
|
||
|
|
||
|
applicationVariants.all { variant ->
|
||
|
variant.outputs.all { output ->
|
||
|
output.outputFileName = "android_${variant.name}.apk"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
task copyAndRenameDebugApk(type: Copy) {
|
||
|
from "$buildDir/outputs/apk/debug/android_debug.apk"
|
||
|
into getExportPath()
|
||
|
rename "android_debug.apk", getExportFilename()
|
||
|
}
|
||
|
|
||
|
task copyAndRenameDevApk(type: Copy) {
|
||
|
from "$buildDir/outputs/apk/dev/android_dev.apk"
|
||
|
into getExportPath()
|
||
|
rename "android_dev.apk", getExportFilename()
|
||
|
}
|
||
|
|
||
|
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()
|
||
|
}
|
||
|
|
||
|
task copyAndRenameDevAab(type: Copy) {
|
||
|
from "$buildDir/outputs/bundle/dev/build-dev.aab"
|
||
|
into getExportPath()
|
||
|
rename "build-dev.aab", getExportFilename()
|
||
|
}
|
||
|
|
||
|
task copyAndRenameReleaseAab(type: Copy) {
|
||
|
from "$buildDir/outputs/bundle/release/build-release.aab"
|
||
|
into getExportPath()
|
||
|
rename "build-release.aab", getExportFilename()
|
||
|
}
|