2022-03-23 20:46:05 +01:00
// Gradle build config for Pandemonium Engine's Android port.
2022-03-15 13:29:32 +01:00
//
// Do not remove/modify comments ending with BEGIN/END, they are used to inject
// addon-specific configuration.
buildscript {
apply from: 'config.gradle'
repositories {
google ( )
mavenCentral ( )
2024-04-20 13:35:32 +02:00
gradlePluginPortal ( )
maven { url "https://plugins.gradle.org/m2/" }
2022-03-15 13:29:32 +01:00
//CHUNK_BUILDSCRIPT_REPOSITORIES_BEGIN
//CHUNK_BUILDSCRIPT_REPOSITORIES_END
}
dependencies {
2024-04-20 13:35:32 +02:00
classpath "com.android.tools.build:gradle:$versions.androidGradlePlugin"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlinVersion"
2022-03-15 13:29:32 +01:00
//CHUNK_BUILDSCRIPT_DEPENDENCIES_BEGIN
//CHUNK_BUILDSCRIPT_DEPENDENCIES_END
}
}
2022-07-29 08:35:59 +02:00
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
apply from: 'config.gradle'
2022-03-15 13:29:32 +01:00
allprojects {
repositories {
google ( )
mavenCentral ( )
2024-04-20 13:35:32 +02:00
gradlePluginPortal ( )
maven { url "https://plugins.gradle.org/m2/" }
2022-03-15 13:29:32 +01:00
//CHUNK_ALLPROJECTS_REPOSITORIES_BEGIN
//CHUNK_ALLPROJECTS_REPOSITORIES_END
2022-03-23 20:46:05 +01:00
// Pandemonium user plugins custom maven repos
String [ ] mavenRepos = getPandemoniumPluginsMavenRepos ( )
2022-03-15 13:29:32 +01:00
if ( mavenRepos ! = null & & mavenRepos . size ( ) > 0 ) {
for ( String repoUrl : mavenRepos ) {
maven {
url repoUrl
}
}
}
}
}
2022-03-22 19:35:57 +01:00
configurations {
// Initializes a placeholder for the devImplementation dependency configuration.
devImplementation { }
}
2022-03-15 13:29:32 +01:00
dependencies {
2024-04-20 13:35:32 +02:00
implementation "androidx.fragment:fragment:$versions.fragmentVersion"
2022-03-15 13:29:32 +01:00
if ( rootProject . findProject ( ":lib" ) ) {
implementation project ( ":lib" )
2022-03-23 20:46:05 +01:00
} else if ( rootProject . findProject ( ":pandemonium:lib" ) ) {
implementation project ( ":pandemonium:lib" )
2022-03-15 13:29:32 +01:00
} else {
2022-03-23 20:46:05 +01:00
// Custom build mode. In this scenario this project is the only one around and the Pandemonium
// library is available through the pre-generated pandemonium-lib.*.aar android archive files.
2022-03-15 13:29:32 +01:00
debugImplementation fileTree ( dir: 'libs/debug' , include: [ '*.jar' , '*.aar' ] )
2022-03-22 19:35:57 +01:00
devImplementation fileTree ( dir: 'libs/dev' , include: [ '*.jar' , '*.aar' ] )
2022-03-15 13:29:32 +01:00
releaseImplementation fileTree ( dir: 'libs/release' , include: [ '*.jar' , '*.aar' ] )
}
2022-03-23 20:46:05 +01:00
// Pandemonium user plugins remote dependencies
String [ ] remoteDeps = getPandemoniumPluginsRemoteBinaries ( )
2022-03-15 13:29:32 +01:00
if ( remoteDeps ! = null & & remoteDeps . size ( ) > 0 ) {
for ( String dep : remoteDeps ) {
implementation dep
}
}
2022-03-23 20:46:05 +01:00
// Pandemonium user plugins local dependencies
String [ ] pluginsBinaries = getPandemoniumPluginsLocalBinaries ( )
2022-03-15 13:29:32 +01:00
if ( pluginsBinaries ! = null & & pluginsBinaries . size ( ) > 0 ) {
implementation files ( pluginsBinaries )
}
//CHUNK_DEPENDENCIES_BEGIN
//CHUNK_DEPENDENCIES_END
}
android {
compileSdkVersion versions . compileSdk
buildToolsVersion versions . buildTools
2022-03-22 19:35:57 +01:00
ndkVersion versions . ndkVersion
2022-03-15 13:29:32 +01:00
compileOptions {
sourceCompatibility versions . javaVersion
targetCompatibility versions . javaVersion
}
2022-07-29 08:35:59 +02:00
kotlinOptions {
jvmTarget = versions . javaVersion
}
2022-03-15 13:29:32 +01:00
assetPacks = [ ":assetPacks:installTime" ]
2024-04-20 13:35:32 +02:00
namespace = 'com.pandemonium.game'
2022-03-15 13:29:32 +01:00
defaultConfig {
2022-03-23 20:46:05 +01:00
// The default ignore pattern for the 'assets' directory includes hidden files and directories which are used by Pandemonium projects.
2022-03-15 13:29:32 +01:00
aaptOptions {
ignoreAssetsPattern "!.svn:!.git:!.gitignore:!.ds_store:!*.scc:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
}
ndk {
String [ ] export_abi_list = getExportEnabledABIs ( )
abiFilters export_abi_list
}
2022-03-23 20:46:05 +01:00
manifestPlaceholders = [ pandemoniumEditorVersion: getPandemoniumEditorVersion ( ) ]
2022-03-15 13:29:32 +01:00
// Feel free to modify the application id to your own.
applicationId getExportPackageName ( )
versionCode getExportVersionCode ( )
versionName getExportVersionName ( )
minSdkVersion getExportMinSdkVersion ( )
targetSdkVersion getExportTargetSdkVersion ( )
2022-03-22 19:35:57 +01:00
missingDimensionStrategy 'products' , 'template'
2022-03-15 13:29:32 +01:00
//CHUNK_ANDROID_DEFAULTCONFIG_BEGIN
//CHUNK_ANDROID_DEFAULTCONFIG_END
}
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 custom builds.
zipAlignEnabled shouldZipAlign ( )
if ( shouldSign ( ) ) {
signingConfig signingConfigs . debug
} else {
signingConfig null
}
}
2022-03-22 19:35:57 +01:00
dev {
initWith debug
// Signing and zip-aligning are skipped for prebuilt builds, but
// performed for custom builds.
zipAlignEnabled shouldZipAlign ( )
if ( shouldSign ( ) ) {
signingConfig signingConfigs . debug
} else {
signingConfig null
}
}
2022-03-15 13:29:32 +01:00
release {
// Signing and zip-aligning are skipped for prebuilt builds, but
// performed for custom builds.
zipAlignEnabled shouldZipAlign ( )
if ( shouldSign ( ) ) {
signingConfig signingConfigs . release
} else {
signingConfig null
}
}
}
sourceSets {
main {
manifest . srcFile 'AndroidManifest.xml'
java . srcDirs = [
'src'
//DIR_SRC_BEGIN
//DIR_SRC_END
]
res . srcDirs = [
'res'
//DIR_RES_BEGIN
//DIR_RES_END
]
aidl . srcDirs = [
'aidl'
//DIR_AIDL_BEGIN
//DIR_AIDL_END
]
assets . srcDirs = [
'assets'
//DIR_ASSETS_BEGIN
//DIR_ASSETS_END
]
}
debug . jniLibs . srcDirs = [
'libs/debug'
//DIR_JNI_DEBUG_BEGIN
//DIR_JNI_DEBUG_END
2022-03-22 19:35:57 +01:00
]
dev . jniLibs . srcDirs = [
'libs/dev'
//DIR_JNI_DEV_BEGIN
//DIR_JNI_DEV_END
2022-03-15 13:29:32 +01:00
]
release . jniLibs . srcDirs = [
'libs/release'
//DIR_JNI_RELEASE_BEGIN
//DIR_JNI_RELEASE_END
]
}
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 ( )
}
2022-03-22 19:35:57 +01:00
task copyAndRenameDevApk ( type: Copy ) {
from "$buildDir/outputs/apk/dev/android_dev.apk"
into getExportPath ( )
rename "android_dev.apk" , getExportFilename ( )
}
2022-03-15 13:29:32 +01: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 ( )
}
2022-03-22 19:35:57 +01:00
task copyAndRenameDevAab ( type: Copy ) {
from "$buildDir/outputs/bundle/dev/build-dev.aab"
into getExportPath ( )
rename "build-dev.aab" , getExportFilename ( )
}
2022-03-15 13:29:32 +01:00
task copyAndRenameReleaseAab ( type: Copy ) {
from "$buildDir/outputs/bundle/release/build-release.aab"
into getExportPath ( )
rename "build-release.aab" , getExportFilename ( )
}
2024-04-20 13:35:32 +02:00
/ * *
* Used to validate the version of the Java SDK used for the Godot gradle builds .
* /
task validateJavaVersion {
if ( JavaVersion . current ( ) ! = versions . javaVersion ) {
throw new GradleException ( "Invalid Java version ${JavaVersion.current()}. Version ${versions.javaVersion} is the required Java version for Godot gradle builds." )
}
}
/ *
When they 're scheduled to run, the copy*AARToAppModule tasks generate dependencies for the ' app '
module , so we 're ensuring the ' : app: preBuild ' task is set to run after those tasks .
* /
if ( rootProject . tasks . findByPath ( "copyDebugAARToAppModule" ) ! = null ) {
preBuild . mustRunAfter ( rootProject . tasks . named ( "copyDebugAARToAppModule" ) )
}
if ( rootProject . tasks . findByPath ( "copyDevAARToAppModule" ) ! = null ) {
preBuild . mustRunAfter ( rootProject . tasks . named ( "copyDevAARToAppModule" ) )
}
if ( rootProject . tasks . findByPath ( "copyReleaseAARToAppModule" ) ! = null ) {
preBuild . mustRunAfter ( rootProject . tasks . named ( "copyReleaseAARToAppModule" ) )
}
2022-03-15 13:29:32 +01:00
//CHUNK_GLOBAL_BEGIN
//CHUNK_GLOBAL_END