From 741efa632afb0ea41926530c1bb40b2b2e8daa05 Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Fri, 13 Sep 2024 08:53:29 -0700 Subject: [PATCH] Update the Android editor flavors to avoid vendor-specific references --- .github/workflows/android_builds.yml | 2 +- platform/android/java/build.gradle | 38 +++++++++--------- platform/android/java/editor/build.gradle | 12 +++--- .../org/godotengine/editor/GodotEditor.kt | 0 .../{meta => horizonos}/AndroidManifest.xml | 0 .../{meta => horizonos}/assets/vr_splash.png | Bin .../org/godotengine/editor/GodotEditor.kt | 2 +- .../org/godotengine/editor/GodotXRGame.kt | 0 .../org/godotengine/editor/BaseGodotEditor.kt | 4 ++ .../godotengine/godot/utils/DeviceUtils.kt | 2 +- 10 files changed, 32 insertions(+), 28 deletions(-) rename platform/android/java/editor/src/{google => android}/java/org/godotengine/editor/GodotEditor.kt (100%) rename platform/android/java/editor/src/{meta => horizonos}/AndroidManifest.xml (100%) rename platform/android/java/editor/src/{meta => horizonos}/assets/vr_splash.png (100%) rename platform/android/java/editor/src/{meta => horizonos}/java/org/godotengine/editor/GodotEditor.kt (99%) rename platform/android/java/editor/src/{meta => horizonos}/java/org/godotengine/editor/GodotXRGame.kt (100%) diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml index 2f49f84e90c..47eb6e89042 100644 --- a/.github/workflows/android_builds.yml +++ b/.github/workflows/android_builds.yml @@ -85,7 +85,7 @@ jobs: run: | cd platform/android/java ./gradlew generateGodotEditor - ./gradlew generateGodotMetaEditor + ./gradlew generateGodotHorizonOSEditor cd ../../.. ls -l bin/android_editor_builds/ diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle index 974f072c180..d60f97e3e79 100644 --- a/platform/android/java/build.gradle +++ b/platform/android/java/build.gradle @@ -25,7 +25,7 @@ allprojects { ext { supportedAbis = ["arm32", "arm64", "x86_32", "x86_64"] supportedFlavors = ["editor", "template"] - supportedEditorVendors = ["google", "meta"] + supportedAndroidDistributions = ["android", "horizonos"] supportedFlavorsBuildTypes = [ "editor": ["dev", "debug", "release"], "template": ["dev", "debug", "release"] @@ -94,17 +94,17 @@ def templateExcludedBuildTask() { /** * Generates the build tasks for the given flavor * @param flavor Must be one of the supported flavors ('template' / 'editor') - * @param editorVendor Must be one of the supported editor vendors ('google' / 'meta') + * @param androidDistro Must be one of the supported Android distributions ('android' / 'horizonos') */ -def generateBuildTasks(String flavor = "template", String editorVendor = "google") { +def generateBuildTasks(String flavor = "template", String androidDistro = "android") { if (!supportedFlavors.contains(flavor)) { throw new GradleException("Invalid build flavor: $flavor") } - if (!supportedEditorVendors.contains(editorVendor)) { - throw new GradleException("Invalid editor vendor: $editorVendor") + if (!supportedAndroidDistributions.contains(androidDistro)) { + throw new GradleException("Invalid Android distribution: $androidDistro") } - String capitalizedEditorVendor = editorVendor.capitalize() + String capitalizedAndroidDistro = androidDistro.capitalize() def buildTasks = [] // Only build the binary files for which we have native shared libraries unless we intend @@ -170,28 +170,28 @@ def generateBuildTasks(String flavor = "template", String editorVendor = "google } } else { // Copy the generated editor apk to the bin directory. - String copyEditorApkTaskName = "copyEditor${capitalizedEditorVendor}${capitalizedTarget}ApkToBin" + String copyEditorApkTaskName = "copyEditor${capitalizedAndroidDistro}${capitalizedTarget}ApkToBin" if (tasks.findByName(copyEditorApkTaskName) != null) { buildTasks += tasks.getByName(copyEditorApkTaskName) } else { buildTasks += tasks.create(name: copyEditorApkTaskName, type: Copy) { - dependsOn ":editor:assemble${capitalizedEditorVendor}${capitalizedTarget}" - from("editor/build/outputs/apk/${editorVendor}/${target}") + dependsOn ":editor:assemble${capitalizedAndroidDistro}${capitalizedTarget}" + from("editor/build/outputs/apk/${androidDistro}/${target}") into(androidEditorBuildsDir) - include("android_editor-${editorVendor}-${target}*.apk") + include("android_editor-${androidDistro}-${target}*.apk") } } // Copy the generated editor aab to the bin directory. - String copyEditorAabTaskName = "copyEditor${capitalizedEditorVendor}${capitalizedTarget}AabToBin" + String copyEditorAabTaskName = "copyEditor${capitalizedAndroidDistro}${capitalizedTarget}AabToBin" if (tasks.findByName(copyEditorAabTaskName) != null) { buildTasks += tasks.getByName(copyEditorAabTaskName) } else { buildTasks += tasks.create(name: copyEditorAabTaskName, type: Copy) { - dependsOn ":editor:bundle${capitalizedEditorVendor}${capitalizedTarget}" - from("editor/build/outputs/bundle/${editorVendor}${capitalizedTarget}") + dependsOn ":editor:bundle${capitalizedAndroidDistro}${capitalizedTarget}" + from("editor/build/outputs/bundle/${androidDistro}${capitalizedTarget}") into(androidEditorBuildsDir) - include("android_editor-${editorVendor}-${target}*.aab") + include("android_editor-${androidDistro}-${target}*.aab") } } } @@ -204,7 +204,7 @@ def generateBuildTasks(String flavor = "template", String editorVendor = "google } /** - * Generate the Godot Editor Android binaries. + * Generate the Godot Editor binaries for Android devices. * * Note: Unless the 'generateNativeLibs` argument is specified, the Godot 'tools' shared libraries * must have been generated (via scons) prior to running this gradle task. @@ -212,19 +212,19 @@ def generateBuildTasks(String flavor = "template", String editorVendor = "google */ task generateGodotEditor { gradle.startParameter.excludedTaskNames += templateExcludedBuildTask() - dependsOn = generateBuildTasks("editor", "google") + dependsOn = generateBuildTasks("editor", "android") } /** - * Generate the Godot Editor Android binaries for Meta devices. + * Generate the Godot Editor binaries for HorizonOS devices. * * Note: Unless the 'generateNativeLibs` argument is specified, the Godot 'tools' shared libraries * must have been generated (via scons) prior to running this gradle task. * The task will only build the binaries for which the shared libraries is available. */ -task generateGodotMetaEditor { +task generateGodotHorizonOSEditor { gradle.startParameter.excludedTaskNames += templateExcludedBuildTask() - dependsOn = generateBuildTasks("editor", "meta") + dependsOn = generateBuildTasks("editor", "horizonos") } /** diff --git a/platform/android/java/editor/build.gradle b/platform/android/java/editor/build.gradle index 54d6b9b5f34..45222ca3b0e 100644 --- a/platform/android/java/editor/build.gradle +++ b/platform/android/java/editor/build.gradle @@ -145,14 +145,14 @@ android { } } - flavorDimensions = ["vendor"] + flavorDimensions = ["android_distribution"] productFlavors { - google { - dimension "vendor" + android { + dimension "android_distribution" missingDimensionStrategy 'products', 'editor' } - meta { - dimension "vendor" + horizonos { + dimension "android_distribution" missingDimensionStrategy 'products', 'editor' ndk { //noinspection ChromeOsAbiSupport @@ -176,5 +176,5 @@ dependencies { implementation "org.bouncycastle:bcprov-jdk15to18:1.77" // Meta dependencies - metaImplementation "org.godotengine:godot-openxr-vendors-meta:3.0.0-stable" + horizonosImplementation "org.godotengine:godot-openxr-vendors-meta:3.0.0-stable" } diff --git a/platform/android/java/editor/src/google/java/org/godotengine/editor/GodotEditor.kt b/platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt similarity index 100% rename from platform/android/java/editor/src/google/java/org/godotengine/editor/GodotEditor.kt rename to platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt diff --git a/platform/android/java/editor/src/meta/AndroidManifest.xml b/platform/android/java/editor/src/horizonos/AndroidManifest.xml similarity index 100% rename from platform/android/java/editor/src/meta/AndroidManifest.xml rename to platform/android/java/editor/src/horizonos/AndroidManifest.xml diff --git a/platform/android/java/editor/src/meta/assets/vr_splash.png b/platform/android/java/editor/src/horizonos/assets/vr_splash.png similarity index 100% rename from platform/android/java/editor/src/meta/assets/vr_splash.png rename to platform/android/java/editor/src/horizonos/assets/vr_splash.png diff --git a/platform/android/java/editor/src/meta/java/org/godotengine/editor/GodotEditor.kt b/platform/android/java/editor/src/horizonos/java/org/godotengine/editor/GodotEditor.kt similarity index 99% rename from platform/android/java/editor/src/meta/java/org/godotengine/editor/GodotEditor.kt rename to platform/android/java/editor/src/horizonos/java/org/godotengine/editor/GodotEditor.kt index 328ff9a3bdf..6cb08ae94b6 100644 --- a/platform/android/java/editor/src/meta/java/org/godotengine/editor/GodotEditor.kt +++ b/platform/android/java/editor/src/horizonos/java/org/godotengine/editor/GodotEditor.kt @@ -36,7 +36,7 @@ import org.godotengine.godot.utils.isNativeXRDevice /** * Primary window of the Godot Editor. * - * This is the implementation of the editor used when running on Meta devices. + * This is the implementation of the editor used when running on HorizonOS devices. */ open class GodotEditor : BaseGodotEditor() { diff --git a/platform/android/java/editor/src/meta/java/org/godotengine/editor/GodotXRGame.kt b/platform/android/java/editor/src/horizonos/java/org/godotengine/editor/GodotXRGame.kt similarity index 100% rename from platform/android/java/editor/src/meta/java/org/godotengine/editor/GodotXRGame.kt rename to platform/android/java/editor/src/horizonos/java/org/godotengine/editor/GodotXRGame.kt diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotEditor.kt b/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotEditor.kt index d296d6ad03a..7b6d1f6bd12 100644 --- a/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotEditor.kt +++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotEditor.kt @@ -517,6 +517,10 @@ abstract class BaseGodotEditor : GodotActivity() { return isNativeXRDevice(); } + if (featureTag == "horizonos") { + return isHorizonOSDevice() + } + return false } } diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/DeviceUtils.kt b/platform/android/java/lib/src/org/godotengine/godot/utils/DeviceUtils.kt index abe0c5f8854..dff57581fa3 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/DeviceUtils.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/DeviceUtils.kt @@ -38,7 +38,7 @@ package org.godotengine.godot.utils import android.os.Build /** - * Returns true if running on Meta's Horizon OS. + * Returns true if running on Meta Horizon OS. */ fun isHorizonOSDevice(): Boolean { return "Oculus".equals(Build.BRAND, true)