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 toxr:arcore:arcorefromxr: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 asCoroutines.kthas been replaced withSuspendtoFutureAdapter. (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(), andSession.destroy()have been removed from the API surface. Session is no longer aLifecycleOwner. The Session's lifecycle will now be attached to the lifecycle of the Activity passed inSession.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.createandSession.configurenow throwSecurityExceptionwhen sufficient permissions have not been granted instead of returningSessionCreatePermissionsNotGrantedorSessionConfigurePermissionsNotGranted. (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 ahitTestagainst 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 toHand.trackingState. TheOpenXRimplementation has been modified accordingly.android.permission.SCENE_UNDERSTANDINGpermission requirement inSession.configurehas been changed toandroid.permission.SCENE_UNDERSTANDING_COARSE.LifecycleManager.configureis implemented and now passes in aConfigobject which contains a property for each configurable runtime feature.Session.configurecan now be called with aConfigin order to configure the available runtime features.Session.createnow supports passing aCoroutineContextinstead of aCoroutineDispatcher.Session.createsupports loadingARCorefor Jetpack XR and/orSceneCore. At least one must be provided (testing versions are available).FakePerceptionManagerthrows anAnchorInvalidUuidExceptionwhen an invalid UUID is passed toAnchor.loadandAnchor.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 throwAnchorResourcesExhaustedExceptionif they encounter an error code notifying that theOpenXRresource 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 theSession.