ARCore for Jetpack XR
| Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release |
|---|---|---|---|---|
| October 22, 2025 | - | - | - | 1.0.0-alpha07 |
Declaring dependencies
To add a dependency on ARCore for Jetpack XR, 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.arcore:arcore:1.0.0-alpha07" // Optional dependencies for asynchronous conversions implementation "androidx.xr.arcore:arcore-guava:1.0.0-alpha07" implementation "androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha07" }
Kotlin
dependencies { implementation("androidx.xr.arcore:arcore:1.0.0-alpha07") // Optional dependencies for asynchronous conversions implementation("androidx.xr.arcore:arcore-guava:1.0.0-alpha07") implementation("androidx.xr.arcore:arcore-rxjava3: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.arcore:arcore-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
Bug Fixes
:xr:arcore:arcore-openxradded as an implementation dependency to:xr:arcore:arcore(I47315, b/446999229)
Version 1.0.0-alpha06
September 24, 2025
androidx.xr.arcore:arcore-*:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
API Changes
- Testing support for
ARCorehas migrated to thexr:arcore:arcore-testingmodule. (I25469) - Adding
ArDeviceandRenderViewpointto allow applications to retrieve the device’s pose and display configuration for rendering purposes. (Ib7e3f) - Rename
HandJointTypeenums withHAND_JOINT_TYPE_prefix. (I3f7cd) HandJointTypehas been moved toxr:arcore:arcorefromxr:runtime:runtime. (Iadb9c, b/409058039)Hand.Statenow exposes ajava.nio.FloatBufferwith the joint poses in a format that allows easy access to performance-oriented applications. (I55e27)
Version 1.0.0-alpha05
July 30, 2025
androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05, and androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 are released. Version 1.0.0-alpha05 contains these commits.
New Features
- Add
getPrimaryHandSideso the developer could get the hand side info (I270bd) - Add geospatial check VPS availability API (I58573)
- Add ARCore API for
checkVpsAvailability(Idbded) stateFlowableextension functions added to:xr:arcore:arcore-rxjava3for usage by Java developers. (I083aa, b/427247794)
API Changes
- Config
*Modevals have been renamed to reflect their behavior. (I6d247, b/414648065) - The main ARCore artifact (xr:arcore:arcore) will only contain Kotlin-style async APIs. Java developers can depend on the
xr:arcore:arcore-rxjava3library to access compatible APIs. (Ia525e, b/422794329) - The main ARCore artifact (
xr:scenecore:scenecore) will only contain Kotlin-style async APIs. Java developers can depend on thexr:arcore:arcore-guavalibrary to access compatible APIs. (Iffcb4, b/422773524) Anchor.persistAsync()added toAnchorGuavafor usage by Java developers. (I4af1c, b/425984631)Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface)added toEarthGuavafor usage by Java developers. (I66357, b/425992992)- Java developers will use the extension functions for
GltfModel.createAsyncinGltfModel.kt. Async functions inGltfModelwill be deleted. (I0af60) - 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) subscribeAsFlowableextension functions added to:xr:arcore:arcore-rxjava3for usage by Java developers. (Id3e49, b/427277298)
Version 1.0.0-alpha04
May 7, 2025
androidx.xr.arcore:arcore:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.
API Changes
- Projects released with Kotlin 2.0 require KGP 2.0.0 or newer to be consumed. (Idb6b5)
TrackingStateandHandJointTypehave been moved from ARCore to Runtime.Hand.State.isActive (boolean)has been changed toHand.State.trackingState (androidx.xr.runtime.TrackingState).Anchor.loadreturnsAnchor.AnchorLoadInvalidUuidif the UUID is invalid.
Version 1.0.0-alpha03
February 26, 2025
androidx.xr.arcore:arcore:1.0.0-alpha03 is 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.arcore:arcore:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
New Features
- Added hand tracking support. Use
Hand.leftandHand.rightto access the tracking information. - APIs that generate an anchor (
Anchor.create,Anchor.load,Plane.createAnchor) now all returnAnchorCreateResultand properly implementAnchorCreateResourcesExhausted.
Bug fixes
Anchor.detachno longer causes a fatal crash due to a race condition with the Session update thread.Anchor.createis more stable when running on an emulator
Version 1.0.0-alpha01
December 12, 2024
androidx.xr.arcore:arcore-* 1.0.0-alpha01 is released.
Features of initial release
Inspired by the existing ARCore library, the ARCore for Jetpack XR library provides capabilities for blending digital content with the real world. This library includes motion tracking, persistent anchors, hit testing, and plane identification with semantic labeling (for example, floor, walls, and tabletops). View the developer guide to learn more about working with ARCore for Jetpack XR.
Session: ARCore for Jetpack XR uses the Jetpack XR Runtime under-the-hood to power its functionality. You will use a Session to interact with most ARCore for Jetpack XR APIs, so please take a look at its documentation.Plane: Use planes to understand the world around you. Each plane has aLabelthat describes it semantically. You can usesubscribeto be notified about the latest detected planes orstateto be notified about the changes to a specific plane.Anchor: A link between a virtual object and a real world location. Anchors can be attached to a specific location in space (usingcreate) or aTrackable(usingcreateAnchor).Anchors can be reused across sessions. You can use
persistto store them,getPersistedAnchorUuidsto enumerate them andloadto retrieve them. Make sure that youunpersistthem once they are no longer in use.Anchors are interoperable between ARCore for Jetpack XR and Jetpack SceneCore. You can create an
AnchorEntityusing an anchor or, if you have an existing AnchorEntity, you can usegetAnchorto retrieve its backing anchor.Offer natural user interactions using
hitTest. A hitTest uses aRayto determine which contents it intersects and to create anAnchorfrom that location. Consider conducting a hitTest from anInputEvent.
Known Issues
There might be a delay between calling
unpersistand its UUID being removed from the results returned bygetPersistedAnchorUuids.createwill not validate that the system has enough resources to return new anchors. Creating an excessive amount of anchors might lead to a crash.Persisting an Anchor that was previously persisted and unpersisted is not currently supported.
Usage in the emulator is supported, but the behavior might not be as stable as when running on an actual device. Particularly, calls to
createmight fail with a native code error and immediately terminate the activity.In certain circumstances, a
RuntimeExceptionmight be erroneously thrown when callingpersistwith the message “Anchor was not persisted”. In those circumstances, the function would still succeed and the anchor will be persisted. We recommend wrapping the call topersistwith atryblock as a workaround.