diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle
index 51e179897b3..77cf8a589d7 100644
--- a/platform/android/java/app/config.gradle
+++ b/platform/android/java/app/config.gradle
@@ -15,7 +15,7 @@ ext.versions = [
// Also update 'platform/android/detect.py#get_ndk_version()' when this is updated.
ndkVersion : '28.1.13356709',
splashscreenVersion: '1.0.1',
- openxrVendorsVersion: '4.1.1-stable',
+ openxrVendorsVersion: '4.2.0-stable',
junitVersion : '1.3.0',
espressoCoreVersion: '3.7.0',
kotlinTestVersion : '1.3.11',
diff --git a/platform/android/java/editor/build.gradle b/platform/android/java/editor/build.gradle
index bbe9227a9f8..666a14784b9 100644
--- a/platform/android/java/editor/build.gradle
+++ b/platform/android/java/editor/build.gradle
@@ -203,6 +203,8 @@ dependencies {
implementation "androidx.constraintlayout:constraintlayout:2.2.1"
implementation "org.bouncycastle:bcprov-jdk15to18:1.78"
+ // Android XR dependencies
+ androidImplementation "org.godotengine:godot-openxr-vendors-androidxr:$versions.openxrVendorsVersion"
// Meta dependencies
horizonosImplementation "org.godotengine:godot-openxr-vendors-meta:$versions.openxrVendorsVersion"
// Pico dependencies
diff --git a/platform/android/java/editor/src/android/AndroidManifest.xml b/platform/android/java/editor/src/android/AndroidManifest.xml
new file mode 100644
index 00000000000..8d47735c7ea
--- /dev/null
+++ b/platform/android/java/editor/src/android/AndroidManifest.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt b/platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt
index 4b0d4ecb053..52ee12f76cb 100644
--- a/platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt
+++ b/platform/android/java/editor/src/android/java/org/godotengine/editor/GodotEditor.kt
@@ -33,6 +33,16 @@ package org.godotengine.editor
/**
* Primary window of the Godot Editor.
*
- * This is the implementation of the editor used when running on regular Android devices.
+ * This is the implementation of the editor used when running on Android devices.
*/
-open class GodotEditor : BaseGodotEditor()
+open class GodotEditor : BaseGodotEditor() {
+
+ override fun getXRRuntimePermissions(): MutableSet {
+ val xrRuntimePermissions = super.getXRRuntimePermissions()
+
+ xrRuntimePermissions.add("android.permission.EYE_TRACKING_FINE")
+ xrRuntimePermissions.add("android.permission.HAND_TRACKING")
+
+ return xrRuntimePermissions
+ }
+}
diff --git a/platform/android/java/editor/src/main/AndroidManifest.xml b/platform/android/java/editor/src/main/AndroidManifest.xml
index 151ad227b8f..f47f6cb9638 100644
--- a/platform/android/java/editor/src/main/AndroidManifest.xml
+++ b/platform/android/java/editor/src/main/AndroidManifest.xml
@@ -115,6 +115,7 @@
android:configChanges="layoutDirection|locale|orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
android:process=":GodotXRGame"
android:launchMode="singleTask"
+ android:taskAffinity=":xr"
android:icon="@mipmap/ic_play_window"
android:label="@string/godot_game_activity_name"
android:exported="false"
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 f095a93d220..e4d49e23bba 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
@@ -69,11 +69,7 @@ import org.godotengine.godot.error.Error
import org.godotengine.godot.utils.DialogUtils
import org.godotengine.godot.utils.PermissionsUtil
import org.godotengine.godot.utils.ProcessPhoenix
-import org.godotengine.godot.utils.isNativeXRDevice
-import org.godotengine.godot.xr.HybridMode
-import org.godotengine.godot.xr.getHybridAppLaunchMode
-import org.godotengine.godot.xr.HYBRID_APP_PANEL_CATEGORY
-import org.godotengine.godot.xr.HYBRID_APP_IMMERSIVE_CATEGORY
+import org.godotengine.openxr.vendors.utils.*
import kotlin.math.min
/**
@@ -743,12 +739,8 @@ abstract class BaseGodotEditor : GodotActivity(), GameMenuFragment.GameMenuListe
return isNativeXRDevice(applicationContext)
}
- if (featureTag == "horizonos") {
- return BuildConfig.FLAVOR == "horizonos"
- }
-
- if (featureTag == "picoos") {
- return BuildConfig.FLAVOR == "picoos"
+ if (featureTag == BuildConfig.FLAVOR) {
+ return true
}
return super.supportsFeature(featureTag)
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotGame.kt b/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotGame.kt
index 392c26b8743..7e4c70c4fcc 100644
--- a/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotGame.kt
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/BaseGodotGame.kt
@@ -38,8 +38,7 @@ import org.godotengine.godot.GodotLib
import org.godotengine.godot.editor.utils.GameMenuUtils
import org.godotengine.godot.utils.PermissionsUtil
import org.godotengine.godot.utils.ProcessPhoenix
-import org.godotengine.godot.xr.HYBRID_APP_FEATURE
-import org.godotengine.godot.xr.isHybridAppEnabled
+import org.godotengine.openxr.vendors.utils.*
/**
* Base class for the Godot play windows.
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt
index 066e88ea6a2..45c8f5050df 100644
--- a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt
@@ -43,11 +43,8 @@ import org.godotengine.editor.embed.GameMenuFragment
import org.godotengine.godot.GodotLib
import org.godotengine.godot.editor.utils.GameMenuUtils
import org.godotengine.godot.utils.ProcessPhoenix
-import org.godotengine.godot.utils.isHorizonOSDevice
-import org.godotengine.godot.utils.isNativeXRDevice
-import org.godotengine.godot.xr.HYBRID_APP_PANEL_FEATURE
import org.godotengine.godot.xr.XRMode
-import org.godotengine.godot.xr.isHybridAppEnabled
+import org.godotengine.openxr.vendors.utils.*
/**
* Drives the 'run project' window of the Godot Editor.