summaryrefslogtreecommitdiffstats
path: root/platform/android/java/app
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/java/app')
-rw-r--r--platform/android/java/app/build.gradle40
-rw-r--r--platform/android/java/app/config.gradle8
-rw-r--r--platform/android/java/app/src/com/godot/game/GodotApp.java15
3 files changed, 57 insertions, 6 deletions
diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle
index b9d15deec9..fdc5753798 100644
--- a/platform/android/java/app/build.gradle
+++ b/platform/android/java/app/build.gradle
@@ -29,6 +29,8 @@ allprojects {
configurations {
// Initializes a placeholder for the devImplementation dependency configuration.
devImplementation {}
+ // Initializes a placeholder for the monoImplementation dependency configuration.
+ monoImplementation {}
}
dependencies {
@@ -42,9 +44,9 @@ dependencies {
} 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'])
+ 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
@@ -60,6 +62,12 @@ dependencies {
if (pluginsBinaries != null && pluginsBinaries.size() > 0) {
implementation files(pluginsBinaries)
}
+
+ // .NET dependencies
+ String jar = '../../../../modules/mono/thirdparty/libSystem.Security.Cryptography.Native.Android.jar'
+ if (file(jar).exists()) {
+ monoImplementation files(jar)
+ }
}
android {
@@ -155,6 +163,10 @@ android {
}
}
+ buildFeatures {
+ buildConfig = true
+ }
+
buildTypes {
debug {
@@ -192,6 +204,13 @@ android {
}
}
+ flavorDimensions 'edition'
+
+ productFlavors {
+ standard {}
+ mono {}
+ }
+
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
@@ -207,7 +226,8 @@ android {
applicationVariants.all { variant ->
variant.outputs.all { output ->
- output.outputFileName = "android_${variant.name}.apk"
+ String filenameSuffix = variant.flavorName == "mono" ? variant.name : variant.buildType.name
+ output.outputFileName = "android_${filenameSuffix}.apk"
}
}
}
@@ -220,12 +240,20 @@ task copyAndRenameBinary(type: Copy) {
String exportPath = getExportPath()
String exportFilename = getExportFilename()
+ String exportEdition = getExportEdition()
String exportBuildType = getExportBuildType()
+ String exportBuildTypeCapitalized = exportBuildType.capitalize()
String exportFormat = getExportFormat()
boolean isAab = exportFormat == "aab"
- String sourceFilepath = isAab ? "$buildDir/outputs/bundle/$exportBuildType/build-${exportBuildType}.aab" : "$buildDir/outputs/apk/$exportBuildType/android_${exportBuildType}.apk"
- String sourceFilename = isAab ? "build-${exportBuildType}.aab" : "android_${exportBuildType}.apk"
+ boolean isMono = exportEdition == "mono"
+ String filenameSuffix = exportBuildType
+ if (isMono) {
+ filenameSuffix = isAab ? "${exportEdition}-${exportBuildType}" : "${exportEdition}${exportBuildTypeCapitalized}"
+ }
+
+ String sourceFilename = isAab ? "build-${filenameSuffix}.aab" : "android_${filenameSuffix}.apk"
+ String sourceFilepath = isAab ? "$buildDir/outputs/bundle/${exportEdition}${exportBuildTypeCapitalized}/$sourceFilename" : "$buildDir/outputs/apk/$exportEdition/$exportBuildType/$sourceFilename"
from sourceFilepath
into exportPath
diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle
index 611a9c4a40..597a4d5c14 100644
--- a/platform/android/java/app/config.gradle
+++ b/platform/android/java/app/config.gradle
@@ -224,6 +224,14 @@ ext.getExportFilename = {
return exportFilename
}
+ext.getExportEdition = {
+ String exportEdition = project.hasProperty("export_edition") ? project.property("export_edition") : ""
+ if (exportEdition == null || exportEdition.isEmpty()) {
+ exportEdition = "standard"
+ }
+ return exportEdition
+}
+
ext.getExportBuildType = {
String exportBuildType = project.hasProperty("export_build_type") ? project.property("export_build_type") : ""
if (exportBuildType == null || exportBuildType.isEmpty()) {
diff --git a/platform/android/java/app/src/com/godot/game/GodotApp.java b/platform/android/java/app/src/com/godot/game/GodotApp.java
index 22e617f6e7..9d4991e120 100644
--- a/platform/android/java/app/src/com/godot/game/GodotApp.java
+++ b/platform/android/java/app/src/com/godot/game/GodotApp.java
@@ -33,14 +33,29 @@ package com.godot.game;
import org.godotengine.godot.GodotActivity;
import android.os.Bundle;
+import android.util.Log;
import androidx.core.splashscreen.SplashScreen;
+import com.godot.game.BuildConfig;
+
/**
* Template activity for Godot Android builds.
* Feel free to extend and modify this class for your custom logic.
*/
public class GodotApp extends GodotActivity {
+ static {
+ // .NET libraries.
+ if (BuildConfig.FLAVOR.equals("mono")) {
+ try {
+ Log.v("GODOT", "Loading System.Security.Cryptography.Native.Android library");
+ System.loadLibrary("System.Security.Cryptography.Native.Android");
+ } catch (UnsatisfiedLinkError e) {
+ Log.e("GODOT", "Unable to load System.Security.Cryptography.Native.Android library");
+ }
+ }
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
SplashScreen.installSplashScreen(this);