summaryrefslogtreecommitdiffstats
path: root/platform/android/java/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/java/build.gradle')
-rw-r--r--platform/android/java/build.gradle40
1 files changed, 32 insertions, 8 deletions
diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle
index d60f97e3e7..9184e8c5d5 100644
--- a/platform/android/java/build.gradle
+++ b/platform/android/java/build.gradle
@@ -30,6 +30,7 @@ ext {
"editor": ["dev", "debug", "release"],
"template": ["dev", "debug", "release"]
]
+ supportedEditions = ["standard", "mono"]
// Used by gradle to specify which architecture to build for by default when running
// `./gradlew build` (this command is usually used by Android Studio).
@@ -53,7 +54,7 @@ def getSconsTaskName(String flavor, String buildType, String abi) {
* The zip file also includes some gradle tools to enable gradle builds from the Godot Editor.
*/
task zipGradleBuild(type: Zip) {
- onlyIf { generateGodotTemplates.state.executed || generateDevTemplate.state.executed }
+ onlyIf { generateGodotTemplates.state.executed || generateGodotMonoTemplates.state.executed || generateDevTemplate.state.executed }
doFirst {
logger.lifecycle("Generating Godot gradle build template")
}
@@ -94,15 +95,22 @@ def templateExcludedBuildTask() {
/**
* Generates the build tasks for the given flavor
* @param flavor Must be one of the supported flavors ('template' / 'editor')
+ * @param edition Must be one of the supported editions ('standard' / 'mono')
* @param androidDistro Must be one of the supported Android distributions ('android' / 'horizonos')
*/
-def generateBuildTasks(String flavor = "template", String androidDistro = "android") {
+def generateBuildTasks(String flavor = "template", String edition = "standard", String androidDistro = "android") {
if (!supportedFlavors.contains(flavor)) {
throw new GradleException("Invalid build flavor: $flavor")
}
if (!supportedAndroidDistributions.contains(androidDistro)) {
throw new GradleException("Invalid Android distribution: $androidDistro")
}
+ if (!supportedEditions.contains(edition)) {
+ throw new GradleException("Invalid build edition: $edition")
+ }
+ if (edition == "mono" && flavor != "template") {
+ throw new GradleException("'mono' edition only supports the 'template' flavor.")
+ }
String capitalizedAndroidDistro = androidDistro.capitalize()
def buildTasks = []
@@ -126,6 +134,7 @@ def generateBuildTasks(String flavor = "template", String androidDistro = "andro
&& targetLibs.listFiles().length > 0)) {
String capitalizedTarget = target.capitalize()
+ String capitalizedEdition = edition.capitalize()
if (isTemplate) {
// Copy the Godot android library archive file into the app module libs directory.
// Depends on the library build task to ensure the AAR file is generated prior to copying.
@@ -157,15 +166,16 @@ def generateBuildTasks(String flavor = "template", String androidDistro = "andro
// Copy the generated binary template into the Godot bin directory.
// Depends on the app build task to ensure the binary is generated prior to copying.
- String copyBinaryTaskName = "copy${capitalizedTarget}BinaryToBin"
+ String copyBinaryTaskName = "copy${capitalizedEdition}${capitalizedTarget}BinaryToBin"
if (tasks.findByName(copyBinaryTaskName) != null) {
buildTasks += tasks.getByName(copyBinaryTaskName)
} else {
buildTasks += tasks.create(name: copyBinaryTaskName, type: Copy) {
- dependsOn ":app:assemble${capitalizedTarget}"
- from("app/build/outputs/apk/${target}")
+ String filenameSuffix = edition == "mono" ? "${edition}${capitalizedTarget}" : target
+ dependsOn ":app:assemble${capitalizedEdition}${capitalizedTarget}"
+ from("app/build/outputs/apk/${edition}/${target}")
into(binDir)
- include("android_${target}.apk")
+ include("android_${filenameSuffix}.apk")
}
}
} else {
@@ -212,7 +222,7 @@ def generateBuildTasks(String flavor = "template", String androidDistro = "andro
*/
task generateGodotEditor {
gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
- dependsOn = generateBuildTasks("editor", "android")
+ dependsOn = generateBuildTasks("editor", "standard", "android")
}
/**
@@ -224,7 +234,7 @@ task generateGodotEditor {
*/
task generateGodotHorizonOSEditor {
gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
- dependsOn = generateBuildTasks("editor", "horizonos")
+ dependsOn = generateBuildTasks("editor", "standard", "horizonos")
}
/**
@@ -238,6 +248,17 @@ task generateGodotTemplates {
}
/**
+ * Master task used to coordinate the tasks defined above to generate the set of Godot templates
+ * for the 'mono' edition of the engine.
+ */
+task generateGodotMonoTemplates {
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+ dependsOn = generateBuildTasks("template", "mono")
+
+ finalizedBy 'zipGradleBuild'
+}
+
+/**
* Generates the same output as generateGodotTemplates but with dev symbols
*/
task generateDevTemplate {
@@ -295,6 +316,9 @@ task cleanGodotTemplates(type: Delete) {
delete("$binDir/android_debug.apk")
delete("$binDir/android_dev.apk")
delete("$binDir/android_release.apk")
+ delete("$binDir/android_monoDebug.apk")
+ delete("$binDir/android_monoDev.apk")
+ delete("$binDir/android_monoRelease.apk")
delete("$binDir/android_source.zip")
delete("$binDir/godot-lib.template_debug.aar")
delete("$binDir/godot-lib.template_debug.dev.aar")