XR Runtime
| Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release | 
|---|---|---|---|---|
| October 22, 2025 | - | - | - | 1.0.0-alpha07 | 
Declaring dependencies
To add a dependency on XR runtime, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle file for
your app or module:
Groovy
dependencies { implementation "androidx.xr.runtime:runtime:1.0.0-alpha07" // Optional dependencies for asynchronous conversions implementation "androidx.xr.runtime:runtime-guava:1.0.0-alpha07" implementation "androidx.xr.runtime:runtime-rxjava3:1.0.0-alpha07" // Use in environments that do not support OpenXR testImplementation "androidx.xr.runtime:runtime-testing:1.0.0-alpha07" }
Kotlin
dependencies { implementation("androidx.xr.runtime:runtime:1.0.0-alpha07") // Optional dependencies for asynchronous conversions implementation("androidx.xr.runtime:runtime-guava:1.0.0-alpha07") implementation("androidx.xr.runtime:runtime-rxjava3:1.0.0-alpha07") // Use in environments that do not support OpenXR testImplementation("androidx.xr.runtime:runtime-testing:1.0.0-alpha07") }
For more information about dependencies, see Add build dependencies.
Feedback
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Version 1.0
Version 1.0.0-alpha07
October 22, 2025
androidx.xr.runtime:runtime-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
API Changes
- Remove SessionConfigureConfigureNotSupportedand replace it withUnsupportedOperationException. (I7680f)
Version 1.0.0-alpha06
September 24, 2025
androidx.xr.runtime:runtime-*:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
API Changes
- HandJointTypehas been moved to- xr:arcore:arcorefrom- xr:runtime:runtime. (Iadb9c, b/409058039)
- Changing the times operator for componentWiseMultiplicationforVector2,Vector3,Vector4to scale and removing the operator symbol for consistency with other math libraries. Also removingcomponentWiseDivisionfrom the Vector classes in lieu of usingVector.scale(otherVector.inverse()). (I8e1f6, b/399146447)
- Adding [unscaled] to return a Matrix with a scale of one. (I6381d, b/434928658)
- :xr:runtime:runtime-guavawill be removed as- Coroutines.kthas been replaced with- SuspendtoFutureAdapter. (I0cd3c, b/406597902)
Version 1.0.0-alpha05
July 30, 2025
androidx.xr.runtime:runtime-*:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
New Features
- Add HandJointTypeandTrackingState. (I55880, b/334645808)
- Make Config implementation public. (I95860, b/334645808)
- Introduced new SessionCreateResultandSessionConfigureResulttypes. (Icb8cb, b/334645808)
- Add a new BoundingBoxclass that represents an axis-aligned bounding box in 3D space, defined by its minimum and maximum corner points. (Ic68c5, b/423073468)
API Changes
- Renamed and moved androidx.xr.scenecore.PixelDimensionstoandroidx.xr.runtime.math.IntSize2d. Renamed and movedandroidx.xr.scenecore.Dimensionstoandroidx.xr.runtime.math.FloatSize3d. Renamedandroidx.xr.scenecore.PlaneTypetoandroidx.xr.scenecore.PlaneOrientation. Renamedandroidx.xr.scenecore.PlaneSemantictoandroidx.xr.scenecore.PlaneSemanticType. (Ifd405, b/416456228)
- Removed androidx.xr.runtime.FoVclass. Useandroidx.xr.runtime.FieldOfViewinstead. (I9ae27)
- Added an additional overload for Session.createwhich can provide aLifecycleOwnerfor the Session to attach to. Note that an Activity will still need to be provided for resource ownership and theLifecycleOwnermust be scoped within the Activity. (I1690b)
- Renamed FakeRuntimeAnchor.anchorsCreatedtoanchorsCreatedCount(I96df9, b/424441218)
- Config *Modevals have been renamed to reflect their behavior. (I6d247, b/414648065)
- Projects released with Kotlin 2.0 require KGP 2.0.0 or newer to be consumed (Idb6b5, b/344563182)
- APIs related to manifest strings have been moved from :xr:runtime:runtimeto:xr:runtime:runtime-manifest. The package name has changed fromandroidx.xr.runtimetoandroidx.xr.runtime.manifest. (I610ad, b/418800249)
- Session.resume(),- Session.pause(), and- Session.destroy()have been removed from the API surface. Session is no longer a- LifecycleOwner. The Session's lifecycle will now be attached to the lifecycle of the Activity passed in- Session.create(). (I28a03)
- This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler argument to enforce correct usage: -Xjspecify-annotations=strict(this is the default starting with version 2.1.0 of the Kotlin compiler) (Ia8420, b/326456246)
- The main Runtime artifact (:xr:runtime:runtime) will only contain Kolin-style async APIs. Java developers can depend on:xr:runtime:runtime-guavato access compatible APIs. (I05d4a, b/426639315)
- The main Runtime artifact (:xr:runtime:runtime) will only contain Kotlin-style async APIs. Java developers can depend on thexr:runtime:runtime-rxjava3library to access compatible APIs. (I64122, b/426639775)
- Move Coroutines to :xr:runtime:runtime-guavaand Flows to:xr:runtime:runtime-rxjava3. (I60ae9)
- Session.createand- Session.configurenow throw- SecurityExceptionwhen sufficient permissions have not been granted instead of returning- SessionCreatePermissionsNotGrantedor- SessionConfigurePermissionsNotGranted. (I7c488, b/430651879)
Version 1.0.0-alpha04
May 7, 2025
androidx.xr.runtime:runtime:1.0.0-alpha04, androidx.xr.runtime:runtime-openxr:1.0.0-alpha04, and androidx.xr.runtime:runtime-testing:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.
New Features
- Session now implements androidx.lifecycle.LifecycleOwnerfor more interoperability with existing Android lifecycle paradigms.
- Manifest strings for Android XR are specified and documented here.
- Spatial Visibility Callback extension methods added to monitor when the scene content moves inside or outside the user's field of view.
- Added a stub version of the JxrPlatformAdapter(and all its related classes).
- Session will be used in both SceneCoreand Runtime instead of the Session inSceneCore.
- ActivityPose.hitTestwas added, enabling a- hitTestagainst virtual content.
- Specifying multiple Runtime implementations at compile time is now supported. Only one will be loaded at execution time based on the current device's feature set.
- Added new Component type SpatialPointerComponent, allowing clients to specify the icon rendered for the pointer, or to disable the icon. This Component can currently be attached toPanelEntityinstances only.
API Changes
- Make Config implementation public. (I95860)
- Add HandJointTypeandTrackingState. (I55880)
- Projects released with Kotlin 2.0 require KGP 2.0.0 or newer to be consumed (Idb6b5)
- Hand.isActive (boolean)has been changed to- Hand.trackingState. The- OpenXRimplementation has been modified accordingly.
- android.permission.SCENE_UNDERSTANDINGpermission requirement in- Session.configurehas been changed to- android.permission.SCENE_UNDERSTANDING_COARSE.
- LifecycleManager.configureis implemented and now passes in a- Configobject which contains a property for each configurable runtime feature.
- Session.configurecan now be called with a- Configin order to configure the available runtime features.
- Session.createnow supports passing a- CoroutineContextinstead of a- CoroutineDispatcher.
- Session.createsupports loading- ARCorefor Jetpack XR and/or- SceneCore. At least one must be provided (testing versions are available).
- FakePerceptionManagerthrows an- AnchorInvalidUuidExceptionwhen an invalid UUID is passed to- Anchor.loadand- Anchor.unpersist.
- CoreStateis no longer a data class.
Bug Fixes
- Fixed Runtime proguard configurations.
Version 1.0.0-alpha03
February 26, 2025
androidx.xr.runtime:runtime:1.0.0-alpha03, androidx.xr.runtime:runtime-openxr:1.0.0-alpha03, and androidx.xr.runtime:runtime-testing:1.0.0-alpha03 are released with no notable changes since the last alpha. Version 1.0.0-alpha03 contains these commits.
Version 1.0.0-alpha02
February 12, 2025
androidx.xr.runtime:runtime:1.0.0-alpha02, androidx.xr.runtime:runtime-openxr:1.0.0-alpha02, and androidx.xr.runtime:runtime-testing:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.
Breaking & behavioral changes
- OpenXRruntime functions that return an Anchor now throw- AnchorResourcesExhaustedExceptionif they encounter an error code notifying that the- OpenXRresource limit has been reached.
- Permission android.permission.HAND_TRACKINGis now required forSession.createandSession.resume.
New features
- Added hand tracking support.
Bug fixes
- Creating anchors is more stable when running on an emulator
Version 1.0.0-alpha01
December 12, 2024
androidx.xr.runtime:runtime-* 1.0.0-alpha01 is released.
Features of Initial Release
Initial release of Jetpack XR Runtime. This library contains fundamental pieces of functionality for the Jetpack XR suite of libraries. This includes capability discovery, lifecycle management, configuration, and more. The Runtime library provides different variations (e.g. runtime-openxr or runtime-testing) depending on the execution platform. Additionally, this library offers fundamental math abstractions such as Vector3 and Matrix4 that are used across the entire Jetpack XR API surface.
- Session: Provides you with fine-grained controls over the XR system, including deciding when processing is and is not being executed and the overall configuration. It is also the handle that you will use across all other APIs to unlock the underlying system capabilities.
- Pose: A location in an arbitrary coordinate system that has a position and orientation associated with it. You will use this class to communicate the location of objects with ARCore for Jetpack XR and Jetpack SceneCore.
Known Issues
- configureis currently a no-op. Future releases will add new settings that you can use to control the behavior of the- Session.
