New and notable changes in ARCore.
What's new in ARCore v1.46.0
Changes to ARCore SDK's targetSdkVersion
ARCore's targetSdkVersion
has been updated to Android API level 35. If your
app does not specify a
targetSdkVersion
,
your app's targetSdkVersion
will become 35 due to manifest
merging.
For Unity, specifying a Target API Level in your Unity project's Project
Settings > Player > Android > Other Settings will override ARCore's
targetSdkVersion
value.
What's new in ARCore v1.45.0
Flash Mode API
ARCore now supports enabling the device's torch mode, allowing for better perception capabilities in dark environments.
Android (Kotlin/Java)
Config.FlashMode
: configuration option for enabling or disabling the flash unit on the device.- See the Developer guide for more details on how to detect flash capabilities, and how to enable the torch mode.
Android NDK (C)
ArFlashMode
: configuration option for enabling or disabling the flash unit on the device.- See the Developer guide for more details on how to detect flash capabilities, and how to enable the torch mode.
ARCore Extensions for Unity's AR Foundation supports AR Foundation 5
ARCore Extensions for AR Foundation now officially supports AR Foundation 5. When using AR Foundation 5 (the verified version on Unity versions 2022 and 2023), use the following installation methods to obtain a compatible version of ARCore Extensions for AR Foundation:
- Through
Add package from git url...
: usehttps://github.com/google-ar/arcore-unity-extensions.git#arf5
, - Through
Add package from tarball...
: use a release denoted byarf5
from the releases page.
Projects remaining on AR Foundation version 4 can use the following installation methods:
- Through
Add package from git url...
: usehttps://github.com/google-ar/arcore-unity-extensions.git#arf4
, - Through
Add package from tarball...
: use a release denoted byarf4
from the releases page.
To upgrade your project from AR Foundation 4 to AR Foundation 5, see the migration guide.
Custom scripting symbols
such as ARCORE_USE_ARF_5
from the beta support are no longer used.
What's new in ARCore v1.44.0
This release has no new features.
What's new in ARCore v1.43.0
Places API in Geospatial Creator migration
Geospatial Creator's Search feature now uses Google's New Places API. To use the search feature, enable the "Places API (New)" in the Google Cloud Console.
What's new in ARCore v1.42.0
Snap to Tile in Geospatial Creator for Unity
A "Snap to Tile" button has been added to the ARGeospatialCreatorAnchor
Editor Inspector panel. This button sets a Terrain or Rooftop anchor's
Editor-only altitude value to the top of a 3D Tile geometry at the anchor's
current latitude and longitude. Note that this property does not affect the
behavior at runtime. This helps adjust the anchor's position in the editor to
match its position at runtime.
What's new in ARCore v1.41.0
Geospatial Creator API
Geospatial Creator for Unity now includes support for creating and manipulating Geospatial Creator objects in Editor mode. The newly-available classes and APIs are described in the Geospatial Creator API Guide.
AR Foundation versions 5.x support (Beta)
ARCore Extensions for Unity's AR Foundation now supports AR Foundation versions 5.x. To migrate an existing project to AR Foundation, see the migration guide.
What's new in ARCore v1.40.0
Scene Semantics on iOS
The Scene Semantics API is now available in the ARCore SDK for iOS as well as in ARCore Extensions for Unity’s AR Foundation targeting the iOS platform. The Scene Semantics API enables developers to understand the scene surrounding the user in real-time, labeling pixels into 11 classes of outdoor components. See Introduction to Scene Semantics for more information.
iOS
Unity (AR Foundation)
Search for Points of Interest in Geospatial Creator for Unity
Geospatial Creator for Unity now supports a textual search to position the Photographic 3D Tiles view. See Search for Points of Interest in Geospatial Creator for more information.
What's new in ARCore v1.39.0
This release has no new features.
What's new in ARCore v1.38.0
This release has no new features.
What's new in ARCore v1.37.0
Scene Semantics
Scene Semantics provides richer details about the surrounding scene, making it easier to understand the world around the user. Scene Semantics runs an ML model on the camera image feed and provides a semantic image with each pixel corresponding to one of 11 labels of outdoor concepts.
See Introduction to Scene Semantics and the semantics_java sample app for more information.
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
iOS
Streetscape Geometry
Streetscape Geometry is a new ARCore Geospatial API that provides the geometry of buildings and terrain in an area around the user when the Geospatial API is enabled.
Android (Kotlin/Java)
See Streetscape Geometry Developer Guide (Kotlin/Java). Additionally, the geospatial_java sample app has been updated to include Streetscape Geometry.
Android NDK (C)
See Streetscape Geometry Developer Guide (C) for more information.
Unity (AR Foundation)
See Streetscape Geometry Developer Guide (Unity) for more information.
iOS
See Streetscape Geometry Developer Guide (iOS) for more information. Additionally, the GeospatialExample app has been updated to include Streetscape Geometry.
GARStreetscapeGeometry
:GARStreetscapeGeometry.mesh
provides 3D meshes.GARStreetscapeGeometry.meshTransform
provides the origin transform of the geometry relative to the session's world space.GARStreetscapeGeometry.trackingState
maintains the tracking state.GARStreetscapeGeometry.type
indicates if it is terrain or building geometry.GARStreetscapeGeometry.quality
provides the quality of geometry.GARStreetscapeGeometry.identifier
provides the unique identifier for the geometry.GARSession.createAnchorOnStreetscapeGeometry:transform:error:
creates an anchor at the specified location and orientation.GARSession.raycastStreetscapeGeometry:direction:error:
performs a raycast against Streetscape Geometry loaded in the scene.
Rooftop anchors
Rooftop anchors are a new Geospatial anchor type that helps you anchor content to a rooftop.
Android (Kotlin/Java)
See Geospatial anchors (Java). Additionally, the geospatial_java sample app has been updated to include Rooftop anchors.
Android NDK (C)
See Geospatial anchors (C) for more information.
Unity (AR Foundation)
See Geospatial anchors for more information. Additionally, the Geospatial sample has been updated to include Rooftop anchors.
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
provides an anchor for game objects in your scene at the specified latitude, longitude, altitude above the rooftop, and orientation.ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
See Geospatial anchors (iOS) for more information. Additionally, the GeospatialExample app has been updated to include Rooftop anchors.
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
creates a Rooftop anchor at the specified location, altitude above the rooftop in meters and orientation relative to the Earth.GARCreateAnchorOnRooftopFuture
holds the asynchronous state of resolving a Rooftop anchor.GARRooftopAnchorState
describes the state of resolving a Rooftop anchor.
Geospatial Depth
When both the Depth API and Streetscape Geometry modes are enabled in an ARCore session in areas with VPS coverage, the generated depth images are improved using Streetscape Geometry. Streetscape Geometry is integrated into each generated depth image out to a range of 65.535 meters. No changes are needed when calling the Depth API to see this benefit.
Android (Kotlin/Java)
See Geospatial Depth (Java) for more information.
Android NDK (C)
See Geospatial Depth (C) for more information.
Unity (AR Foundation)
See Geospatial Depth (C) for more information.
iOS
Scene Semantics is currently not available for iOS.
Vulkan rendering support
ARCore now provides Vulkan rendering support by exposing the camera image through an AHardwareBuffer
. You can use this Hardware Buffer by binding it to a VkImage
.
See Rendering your ARCore application using Vulkan and the hello_ar_vulkan_c sample app for more information.
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Vulkan rendering is currently not available for Unity using AR Foundation.
Electronic Image Stabilization (EIS)
You can configure ARCore to use Electronic Image Stabilization, which smooths camera frames for a more fluid user experience.
See Enabling Electronic Image Stabilization and the hello_eis_kotlin sample app for more information.
Android (Kotlin/Java)
Config.ImageStabilizationMode
Frame.transformCoordinates3d()
Session.isImageStabilizationModeSupported()
- There is a known issue where calling
Frame.transformCoordinates3d()
with 2D coordinates other thanOPENGL_NORMALIZED_DEVICE_COORDINATES
will cause a crash instead of throwingIllegalArgumentException
. This will be resolved in the following release.
Android NDK (C)
ArImageStabilizationMode
ArFrame_transformCoordinates3d()
ArSession_isImageStabilizationModeSupported()
- There is a known issue where calling
ArFrame_transformCoordinates3d()
with 2D coordinates other thanAR_COORDINATES_2D_OPENGL_NORMALIZED_DEVICE_COORDINATES
will cause your app to abort instead of returningAR_ERROR_INVALID_ARGUMENT
. This will be resolved in the following release.
Unity (AR Foundation)
EIS is currently not available for Unity using AR Foundation.
iOS
EIS is currently not available for iOS.
ARCore async APIs
This release introduces new ARCore async APIs to improve ergonomics when working with asynchronous operations, following the Future and Promise paradigm.
Android (Kotlin/Java)
- Resolving Terrain anchors: Use
Earth.resolveAnchorOnTerrainAsync()
to obtain aResolveAnchorOnTerrainFuture
. The old symbolEarth.resolveAnchorOnTerrain()
has been deprecated and may be removed in a later version of ARCore. - Resolving Cloud anchors: Use
Session.resolveCloudAnchorAsync()
to obtain aResolveCloudAnchorFuture
. The old symbolSession.resolveCloudAnchor()
has been deprecated and may be removed in a later version of ARCore. - Hosting Cloud anchors: Use
Session.hostCloudAnchorAsync()
to obtain aHostCloudAnchorFuture
. The old symbolsSession.hostCloudAnchor()
andSession.hostCloudAnchorWithTtl()
have been deprecated and may be removed in a later version of ARCore. - Check APK availability: Use
ArCoreApk.checkAvailabilityAsync()
to register a callback. The old symbolArCoreApk.checkAvailability()
has not been deprecated.
Android NDK (C)
- Resolving Terrain anchors: Use
ArEarth_resolveAnchorOnTerrainAsync()
to obtain aArResolveAnchorOnTerrainFuture
or useArResolveAnchorOnTerrainCallback
. The old symbolArEarth_resolveAndAcquireNewAnchorOnTerrain()
has been deprecated and may be removed in a later version of ARCore. - Resolving Cloud anchors: Use
ArSession_resolveCloudAnchorAsync()
to obtain aArResolveCloudAnchorFuture
or useArResolveCloudAnchorCallback
. The old symbolArSession_resolveAndAcquireNewCloudAnchor()
has been deprecated and may be removed in a later version of ARCore. - Hosting Cloud anchors: Use
ArSession_hostCloudAnchorAsync()
to obtain aArHostCloudAnchorFuture
or useArHostCloudAnchorCallback
. The old symbolsArSession_hostAndAcquireNewCloudAnchor()
andArSession_hostAndAcquireNewCloudAnchorWithTtl()
have been deprecated and may be removed in a later version of ARCore. - Check APK availability: Use
ArCoreApk_checkAvailabilityAsync()
to register a callback. The old symbolArCoreApk_checkAvailability()
has not been deprecated.
Unity (AR Foundation)
- Resolving Terrain anchors: Use
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
to obtain aResolveAnchorOnTerrainPromise
. The old symbolARAnchorManagerExtensions.ResolveAnchorOnTerrain()
has been deprecated and may be removed in a later version of ARCore. - Resolving Cloud anchors: Use
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
to obtain aResolveCloudAnchorPromise
. The old symbolARAnchorManagerExtensions.ResolveCloudAnchorId()
has been deprecated and may be removed in a later version of ARCore. - Hosting Cloud anchors: Use
ARAnchorManagerExtensions.HostCloudAnchorAsync()
to obtain aHostCloudAnchorPromise
. The oldARAnchorManagerExtensions.HostCloudAnchor()
symbols have been deprecated and may be removed in a later version of ARCore.
iOS
- Resolving Terrain anchors: Use
GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:completionHandler:error:
to obtain aGARCreateAnchorOnTerrainFuture
. The old symbolGARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error:
has been deprecated and may be removed in a later version of ARCore. - Resolving Cloud anchors: Use
GARSession.resolveCloudAnchorWithIdentifier:completionHandler:error:
to obtain aGARResolveCloudAnchorFuture
. The old symbolGARSession.resolveCloudAnchorWithIdentifier:error:
has been deprecated and may be removed in a later version of ARCore. - Hosting Cloud anchors: Use
GARSession.hostCloudAnchor:TTLDays:completionHandler:error:
to obtain aGARHostCloudAnchorFuture
. The old symbolsGARSession.hostCloudAnchor:error:
andGARSession.hostCloudAnchor:TTLDays:error:
have been deprecated and may be removed in a later version of ARCore.
What's new in ARCore v1.36.0
Swift Package Manager support on iOS
The ARCore SDK for iOS now officially supports Swift Package Manager. See Enable AR in your iOS app for instructions on how to integrate with ARCore using Swift Package Manager.
What's new in ARCore v1.35.0
Geospatial pose accuracy replaces heading with yaw
All Geospatial poses now expose their orientation accuracy of the yaw rotation, replacing heading accuracy.
- Java/Kotlin: Replace
GeospatialPose.getHeading()
withGeospatialPose.getEastUpSouthQuaternion()
andGeospatialPose.getHeadingAccuracy()
withGeospatialPose.getOrientationYawAccuracy()
. - C: Replace
ArGeospatialPose_getHeading()
withArGeospatialPose_getEastUpSouthQuaternion()
andArGeospatialPose_getHeadingAccuracy()
withArGeospatialPose_getOrientationYawAccuracy()
. - iOS: Replace
GARGeospatialTransform.heading
withGARGeospatialTransform.eastUpSouthQTarget
andGARGeospatialTransform.headingAccuracy
withGARGeospatialTransform.orientationYawAccuracy
. - Unity: Replace
GeospatialPose.Heading
withGeospatialPose.EunRotation
andGeospatialPose.HeadingAccuracy
withGeospatialPose.OrientationYawAccuracy
.
Additional changes and updates
See the release notes for other changes, bug fixes, and performance improvements:
- ARCore SDK for Android release notes
- ARCore for Android NDK release notes
- ARCore SDK for iOS release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.34.0
Check if Geospatial capabilities are available in the device’s current location
The Geospatial API can now check for Visual Positioning System (VPS) availability at a specified horizontal position at runtime. This API can be used without an active AR session: for example, to present an "Enter AR" button only when VPS is available.
- Java/Kotlin:
Session.checkVpsAvailabilityAsync()
- C:
ArSession_checkVpsAvailabilityAsync()
- iOS:
GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:
- Unity (AR Foundation):
AREarthManager.CheckVpsAvailability()
Geospatial pose orientation
Geospatial poses now expose their orientation in 3D space.
- Java/Kotlin:
feedbackGeospatialPose.getEastUpSouthQuaternion()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARGeospatialTransform.eastUpSouthQTarget
- Unity:
GeospatialPose.EunRotation()
Geospatial pose conversions
Geospatial poses can now be converted to and from world-space (AR) poses.
To get the Geospatial pose from an AR pose:
- Java/Kotlin:
Earth.getGeospatialPose()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARSession.geospatialTransformFromTransform:error:
- Unity:
AREarthManager.Convert(Pose)
To get the AR pose from a Geospatial pose:
- Java/Kotlin:
Earth.getPose()
- C:
ArEarth_getPose()
- iOS:
GARSession.transformFromGeospatialCoordinate:altitude:eastUpSouthQTarget:error:
- Unity:
AREarthManager.Convert(GeospatialPose)
Geospatial poses obtained from these functions have a heading value set to zero. Instead, use the following:
- Android (Java/Kotlin/C): The pose's EUS quaternion
- iOS: The pose's
eastUpSouthQTarget
- Unity: The pose's
EunRotation
Additional changes and updates
See the release notes for other changes, bug fixes, and performance improvements:
- ARCore SDK for Android release notes
- ARCore for Android NDK release notes
- ARCore SDK for iOS release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.33.0
New Cloud Anchors endpoint
- To use Cloud Anchors, you must now enable the ARCore API instead of the older ARCore Cloud Anchor API, which is now deprecated. To support older app versions, you may enable both while making the transition. Apps built with ARCore SDK 1.32.0 and lower will target the older API, while apps built with ARCore SDK 1.33.0 and higher will target the new API. Note the following:
- The new API uses the domain name
arcore.googleapis.com
instead ofarcorecloudanchor.googleapis.com
. - If you are using an API Key which is restricted by API, you must allow the ARCore API.
- If you send requests to the ARCore Cloud Anchor Management API from your backend, you must also change the domain name to
arcore.googleapis.com
, after enabling the ARCore API. - The old API/endpoint will continue to be supported through August 2023.
- See ARCore 1.33 Cloud Anchor endpoint changes for more details.
- The new API uses the domain name
Terrain anchors
- The Geospatial Terrain anchor API creates an anchor at a specified horizontal position and altitude relative to the horizontal position’s terrain.
Additional changes and updates
See the release notes for other changes, bug fixes, and performance improvements:
- ARCore SDK for Android release notes
- ARCore for Android NDK release notes
- ARCore SDK for iOS release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.32.0
This release has no new features.
Android and Unity (AR Foundation) for Android
- ARCore's
targetSdkVersion
has been updated to Android API level 32. If your app does not specify atargetSdkVersion
, your app'stargetSdkVersion
will become 32 due to manifest merging.- Android SDK: Specifying a
targetSdkVersion
in your project'sbuild.gradle
orAndroidManifest.xml
will override ARCore'stargetSdkVersion
value. - AR Foundation for Android: Specifying a Target API Level in your Unity project's Project Settings > Player > Android > Other Settings will override ARCore's
targetSdkVersion
value.
- Android SDK: Specifying a
Additional changes and updates
See the release notes for other changes, bug fixes, and performance improvements:
- ARCore SDK for Android release notes
- ARCore for Android NDK release notes
- ARCore SDK for iOS release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.31.0
ARCore Geospatial API
The new ARCore Geospatial API utilizes data from Google Earth 3D models and Street View image data from Google Maps to enable your app for immersive, global-scale, location-based augmented reality experiences.
See the Introduction to the ARCore Geospatial API for platform-specific developer documentation, and to get started with the new Geospatial API.
Long-range depth
The ARCore Depth API is now optimized to include longer-range depth sensing, increasing the range of representable depth observations. All 16-bits of the depth image are used, providing a maximum range of 65535 millimeters. Previously only 13-bits were populated, with a limit of 8191 millimeters.
See the Changes to Depth for platform-specific developer documentation, and to understand the changes to the Depth API.
Platform-specific notes
Android
New ARCore Geospatial APIs
Java
Earth
provides localization ability in Earth-relative coordinates.Earth.createAnchor()
creates a newAnchor
at the specified location and orientation relative to the Earth.
Earth.Earthstate
describes the current state ofEarth
, including itsTrackingState
.GeospatialPose
describes a specific location, elevation, and compass heading relative to Earth.
C
ArEarth
provides localization ability in Earth-relative coordinates.ArEarth_acquireNewAnchor()
creates a newAnchor
at the specified location and orientation relative to the Earth.ArEarthState
describes the current state ofArEarth
, including itsArTrackingState
.
ArGeospatialPose
describes a specific location, elevation, and compass heading relative to Earth.
Updated ARCore Depth APIs
Java
- The Depth API function calls have changed:
Frame.acquireDepthImage
toFrame.acquireDepthImage16Bits
.Frame.acquireRawDepthImage
toFrame.acquireRawDepthImage16Bits
.- The output image formats for both calls have changed from
android.graphics.ImageFormat#DEPTH16
toandroid.hardware.HardwareBuffer#D_16
. - Depth is still represented as a 16-bit integer in units of millimeters, but now all 16-bits are used to represent depth, allowing for a maximum expressable range to go from 8191mm to 65535mm.
- The Depth API function calls
Frame.acquireDepthImage
andFrame.acquireRawDepthImage
are deprecated. Please useFrame.acquireDepthImage16Bits
andFrame.acquireRawDepthImage16Bits
instead.
- The Depth API function calls have changed:
C
- The Depth API function calls have changed:
ArFrame_acquireDepthImage
toArFrame_acquireDepthImage16Bits
.ArFrame_acquireRawDepthImage
toArFrame_acquireRawDepthImage16Bits
- The output image formats for both calls have changed from
AR_IMAGE_FORMAT_DEPTH16
toAR_IMAGE_FORMAT_D_16
. - Depth is still represented as a 16-bit integer in units of millimeters, but now all 16-bits are used to represent depth, allowing for a maximum expressable range to go from 8191mm to 65535mm.
- The Depth API function calls
ArFrame_acquireDepthImage
andArFrame_acquireRawDepthImage
are deprecated. Please useArFrame_acquireDepthImage16Bits
andArFrame_acquireRawDepthImage16Bits
instead.
- The Depth API function calls have changed:
Unity (AR Foundation)
New ARCore Geospatial APIs:
AREarthManager
provides localization ability in Earth-relative coordinates.EarthTrackingState
gets the tracking state of Earth for the latest frame.EarthState
maintains Earth error conditions.
GeospatialPose
describes a specific location, elevation, and compass heading relative to Earth.ARGeospatialAnchor
provides an anchor for game objects in your scene, specified at a location and orientation relative to the Earth.
iOS
New ARCore Geospatial APIs:
GAREarth
Provides Earth-relative localization.GAREarthState.earthState
manages error states and conditions.GAREarthState.trackingState
maintains the tracking state, required for geospatial data.
GARGeospatialTransform
A representation of a global transform including location, heading, altitude, and accuracy estimates.GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
Creates a Geospatial anchor at the specified location and orientation relative to the Earth.
Other changes
See the release notes for other changes, bug fixes, and performance improvements:
- ARCore SDK for Android release notes
- ARCore for Android NDK release notes
- ARCore SDK for iOS release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.30.0
This release has no new features.
Android
- Annotated API return values with
@NonNull
and@Nullable
. - Updated the build tool versions used for building samples: Gradle to 7.0.2 and Android Gradle plugin to 7.0.4. Upgrading these tools is not required for existing ARCore applications. For new features, known issues, incompatibility information, see Android documentation on Android Gradle plugin.
Unity (AR Foundation)
Added a new
arcore-unity-extensions-without-edm4u.tgz
release. This release variant does not bundle external dependencies such as External Dependency Manager for Unity and allows for upgrades to EDM. Using this lite release may resolve incompatibilities when using Firebase libraries. See installation instructions for ARCore Extensions for AR Foundation to get started.Upgraded ExternalDependencyManager to v1.2.168 to better support 2021.2+, see details in EDM's change log.
Fixed issue where ARCore session configures every frame even there is no change in the session config which causes FPS drop.
iOS
- Various bug fixes and performance improvements.
What's new in ARCore v1.29.0
This release has no new features.
Android
- hello_ar_java and hello_ar_kotlin: Changed an object's color when it is placed using
SCREENSPACE_WITH_APPROXIMATE_DISTANCE
to better distinguish objects placed using Instant Placement. - persistent_cloud_anchor_java: Added a missing build dependency to the sample. Fixes a bug where hosting any anchor would have state
CloudAnchorState ERROR_NOT_AUTHORIZED
even if the project was set up correctly.
Unity (AR Foundation)
- The ARCore Extensions package now depends on ARKit XR Plugin to ensure that the installed AR Foundation version is compatible with the ARKit XR Plugin version. This fixes a compile error when installing ARCore Extensions on Unity 2019.x and enabling the ARKit XR plugin.
- ARCore Extensions project settings has been moved from Project Settings > XR > ARCore Extensions to Project Settings > XR Plug-in Management > ARCore Extensions.
ARCoreExtensionsConfig
,ARCoreExtensionsCameraConfigFilter
,ARCoreRecordingConfig
have been moved from Create > XR > ARCore Extensions to Create > XR menu.
iOS
- Various bug fixes and performance improvements.
Complete release notes
- ARCore SDK for Android complete release notes
- ARCore for Android NDK complete release notes
- ARCore SDK for iOS complete release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.28.0
- Beginning in November 2022, AR-enabled apps will no longer be able to acquire NDK images or image metadata. The SDK versions impacted depend on the specific function being called, see the deprecation announcement to learn more.
- C: Calls to
ArImage_getNdkImage()
andArImage_getNdkCameraMetadata()
will always returnnullptr
for theAImage
andACameraMetadata
objects. - Java: The
Image
object returned byFrame#acquireCameraImage()
will be of size0
x0
pixels. Calls toFrame#getImageMetadata()
will always throwIllegalArgumentException
. - Unity (AR Foundation): When using AR Foundation 2.1 (Unity 2019 LTS), calls to
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will always returnfalse
. AR Foundation 4.x and later versions are unaffected, calls toXRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will behave normally. - ARCore SDK for Unity (deprecated): Calls to
Frame.CameraImage.AcquireCameraImageBytes()
will be of size0
x0
pixels. Calls toFrame.CameraMetadata.GetAllCameraMetadataTags()
will return an emptyList<CameraMetadataTag>
.
- C: Calls to
- Java:
ArImage#getCropRect()
now returns a full-sized crop rectangle, i.e. all pixels in the Image are valid. Seeandroid.media.Image#getCropRect()
for additional information.
What's new in ARCore v1.27.0
This release has no new features. See the following release notes for various bug fixes and performance improvements.
- ARCore SDK for Android complete release notes
- ARCore for Android NDK complete release notes
- ARCore SDK for iOS complete release notes
- ARCore Extensions for AR Foundation release notes
In addition to various bug fixes, this release included the following.
Sample apps in Kotlin
Added hello_ar_kotlin to demonstrate best practices when using Kotlin.
See the QuickStart for Android for more information.
Added ml_kotlin to demonstrate how an image classification model can be used with ARCore.
See Use ARCore as input for Machine Learning models for more information.
What's new in ARCore v1.26.0
This release adds the following notable changes:
- URIs are now supported for datasets in Recording & Playback.
Additional changes and updates
See the following release notes for additional bug fixes and other breaking changes.
- ARCore SDK for Android complete release notes
- ARCore for Android NDK complete release notes
- ARCore SDK for iOS complete release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.25.0
This release has no new features. See the following release notes for various bug fixes and performance improvements.
- ARCore SDK for Android complete release notes
- ARCore for Android NDK complete release notes
- ARCore SDK for iOS complete release notes
- ARCore SDK for Unity complete release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.24.0
This release adds the following notable changes:
- A new Raw Depth API that provides a depth image without image-space filtering
- Custom data track recording capability to the Recording & Playback API
- The ability to conduct Depth hit-tests
Raw Depth
The Raw Depth API provides depth data for a camera image that has higher accuracy than full Depth API data, but does not always cover every pixel. Raw depth images, along with their matching confidence images, can also be further processed, allowing apps to use only the depth data that has sufficient accuracy for their individual use case.
Developer guides:
Custom track recording
The new custom data track capability in the Recording & Playback API allows you to add custom data to an ARCore frame during recording and retrieve that same data from the frame during playback.
Developer guides:
Depth hit-tests
Previously, hit-tests could only be conducted on detected planes, limiting locations to large, flat surfaces. Depth hit-tests take advantage of both smooth and raw depth information to provide more accurate hit results, even on non-planar and low-texture surfaces.
Developer guides:
Additional changes and updates
See the following release notes for additional bug fixes and other breaking changes.
- ARCore SDK for Android complete release notes
- ARCore for Android NDK complete release notes
- ARCore SDK for iOS complete release notes
- ARCore SDK for Unity complete release notes
- ARCore Extensions for AR Foundation release notes
What's new in ARCore v1.23.0
Pending dual camera support
Support for dual camera is being rolled out in the coming weeks. See the supported devices page for more information.
New debugging tools
By sending a broadcast intent, developers can enable:
ARCore API call logging to the Android debug log
The ARCore performance overlay
Hosting and resolving Cloud Anchors
AR-enabled apps built using ARCore SDK 1.11.0 or earlier are no longer able to host or resolve Cloud Anchors.
C: Cloud Anchors returned by
ArSession_hostAndAcquireNewCloudAnchor
andArSession_resolveAndAcquireNewCloudAnchor
will always have stateAR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
.Java: Cloud Anchors returned by
Session.hostCloudAnchor(Anchor)
andSession.resolveCloudAnchor(String)
will always have stateAnchor.CloudAnchorState.ERROR_INTERNAL
.Unity: Cloud Anchors returned by
XPSession.CreateCloudAnchor(Anchor)
andXPSession.ResolveCloudAnchor(string)
will always have stateCloudServiceResponse.ErrorInternal
.
Apps built with ARCore SDK 1.12.0 or later are unaffected. Their use of the ARCore Cloud Anchor API is covered by the deprecation policy.
Additional changes and updates
See the following release notes for additional bug fixes and other breaking changes.
What's new in ARCore v1.22.0
This release adds new Recording and Playback APIs and Camera Config Filter APIs for ARCore Extensions for AR Foundation. See the ARCore Extensions complete release notes for details.
Additional changes and updates
See the following release notes for additional bug fixes and other breaking changes.
What's new in ARCore v1.21.0
This release adds new Recording and Playback APIs for Android, Android NDK, and Unity.
Recording and Playback
With the Recording and Playback APIs, you can record video and AR data once within a given environment and use that content to replace a live camera session for testing purposes. ARCore saves recorded sessions to MP4 files that contain multiple video tracks and other miscellaneous data on the device. You can then point your app to use this data in place of a live camera session. This allows you to replay that content indefinitely to try out different AR effects without having to return to the field.
For more details:
Java:
C:
Unity:
What's new in ARCore v1.20.0
This release adds the following notable changes:
New support for persistent Cloud Anchors.
Updated image metadata capabilities for Android and Android NDK.
New guidance requiring Gradle version 5.6.4 or later, to support ARCore Extensions for AR Foundation or the ARCore SDK for Unity (1.19 or later) with Unity 2018.4 or later.
New support for persistent Cloud Anchors
Prior to ARCore v1.20, Cloud Anchors could only be resolved for up to 24 hours after they were first hosted. With persistent Cloud Anchors, you can now create a Cloud Anchor with a time to live (TTL) between one and 365 days. You can also extend the lifetime of the anchor after it is already hosted using the Cloud Anchor Management API.
Use of persistent Cloud Anchors is covered by the new Cloud Anchors deprecation policy.
C: Developer guide,
ArSession_hostAndAcquireNewCloudAnchorWithTtl
, andArSession_estimateFeatureMapQualityForHosting
.Java: Developer guide,
hostCloudAnchorWithTtl
, andestimateFeatureMapQualityForHosting
.iOS: Developer guide,
hostCloudAnchor:TTLDays:error:
andestimateFeatureMapQualityForHosting:
.ARCore Extensions for AR Foundation: Android developer guide, iOS developer guide,
ARAnchorManager.HostCloudAnchor(ARAnchor, int)
,ARAnchorManager.SetAuthToken(string)
, andARAnchorManager.EstimateFeatureMapQualityForHosting(Pose)
.Unity targeting Android: Developer guide,
XPSession.CreateCloudAnchor(Anchor, int)
andXPSession.EstimateFeatureMapQualityForHosting(Pose)
.Unity targeting iOS: Developer guide,
XPSession.SetAuthToken(string)
andXPSession.CreateCloudAnchor(UnityARUserAnchorComponent, int)
.
Additional changes and updates
See the following release notes for additional bug fixes and other breaking changes.
What's new in ARCore v1.19.0
This release adds the following notable changes:
- New Instant Placement API for Android, Android NDK, and Unity.
- New guidance for building for Android 11 with Unity.
Instant Placement
The Instant Placement API allows the user to place an AR object on the screen without having to wait for ARCore to detect surface geometry. Object placement is refined in real time as the user moves further around the environment. Once ARCore detects the correct pose in the region where the AR object is placed, the white object automatically updates to be pose-accurate, and becomes opaque.
The following clip shows a virtual Android figure on a real-world table. The figure is white and much smaller when first placed. After ARCore refines its calculations of the scene dimensions, the figure jumps to a more accurate position. This may result in a difference in the perceived "size" of the object.
For more details:
Android:
Android NDK:
Unity:
What's new in ARCore v1.18.0
This release adds the following notable changes:
- New Depth API for Android, Android NDK, and Unity.
- New guidance for creating Augmented Faces assets and importing them into Android Studio.
- Depth API will be supported in
4.1.0-preview.2
for bothAR Foundation
andARCore XR Plugin
.
Depth API
On depth-supported devices, the Depth API uses the ARCore-supported device’s RGB camera, or active depth sensor if available, to create depth maps. You can then use the per-pixel depth provided by a depth map to make virtual objects accurately appear in front of or behind real world objects, enabling immersive and realistic user experiences.
For example, the following images show a virtual Android figure in a real space containing a trunk beside a door. The Depth API properly occludes the figure behind the edge of the trunk.
For more details:
Android:
Android NDK:
Unity:
What's new in ARCore v1.17.0
Notable in ARCore SDK for Android
Added new methods that allow for buffering multiple camera frames. Along with other techniques such as multithreaded rendering, this can be used to decrease variability in frame rates.
Added missing depth sensor usage and target FPS getters:
See also the Android SDK for Android complete release notes.
Notable in ARCore SDK for Unity
- Added support for multithreaded rendering in Unity version 2018.2 or later, which in most cases will improve performance and can help decrease variability in frame rates. This is a Unity project setting, located in Project Settings > Player > Android > Other Settings > Multithreaded Rendering. See the Developer guide for details.
- Added
SessionStatus.ErrorCameraNotAvailable
andSessionStatus.ErrorIllegalState
to indicate specific ARCore session error states.
See also the ARCore SDK for Unity complete release notes.
Notable in ARCore SDK for iOS
The binary size of the Cloud Anchors SDK has significantly decreased.
Bitcode is now supported for Augmented Faces.
See also the ARCore SDK for iOS complete release notes.
What's new in ARCore v1.16.0
Notable in ARCore SDK for Android and Sceneform SDK for Android
This release adds the following notable changes:
- Most devices now return additional supported camera configurations with lower
GPU texture resolutions than the device's default GPU texture resolution.
See ARCore supported devices for details.
These expanded GPU resolutions are available via the
getSupportedCameraConfigs(CameraConfigFilter)
API.
See also:
Notable in ARCore Extensions for AR Foundation
This release adds the following notable changes:
AR Foundation's
XRCameraConfiguration
is extended with methods that let you choose the appropriate camera configuration based on the criteria you want. These methods include GetTextureDimensions(), GetFPSRange(), and GetDepthSensorUsages(). Read detailed instructions.Unity 2019.3.0f6 is now the minimum recommended version for ARCore Extensions. AR Foundation 3.1.0-preview.6 requires Unity version 2019.3 or later.
Unity now uses the terms Anchor, Cloud Anchor, and Cloud Anchor ID in their cross-platform AR API. The documentation for ARCore Extensions has been updated to reflect this.
See also:
Notable in ARCore SDK for Unity
This release adds the following notable change:
- Most devices now return additional supported camera configurations with lower GPU texture resolutions than the device's default GPU texture resolution. (See ARCore supported devices for details.) These expanded GPU resolutions are available via the ARCoreCameraConfigFilter API.
See also:
ARCore SDK for Unity complete release notes
What's new in ARCore v1.15.0
Notable in ARCore Extensions for AR Foundation
This release adds the following notable changes.
Added CloudAnchors sample showing how to create shared AR experiences for both Android and iOS. See instructions for Android or iOS.
Unity 2019.2.17f1 is now the minimum recommended version to use with ARCore Extensions.
ARCore Extensions complete release notes
Notable in ARCore SDK for Unity
This release has the following known issues.
Instant Preview may freeze Unity when using Android 9 and a USB 3 cable. To remedy, update to Android 10 or use a USB 2 cable.
Instant Preview may fail to display on device when Unity's game view resolution is too high. To remedy, lower Unity's game view resolution in the Editor.
ARCore SDK for Unity complete release notes
Additional changes
See the following release notes for additional bug fixes and other breaking changes.
What's new in ARCore v1.14.0
This release adds the following notable changes.
When an app temporarily loses the camera to another app on the device, the reason for tracking failure is now more specific:
Android:
TrackingFailureReason
isCAMERA_UNAVAILABLE
instead ofNONE
.Android NDK:
ArTrackingFailureReasons
isAR_TRACKING_FAILURE_REASON_CAMERA_UNAVAILABLE
instead ofAR_TRACKING_FAILURE_REASON_NONE
.Unity:
Session.LostTrackingReason
isLostTrackingReason.CameraUnavailable
instead ofNone
.
Google collects and processes data from your use of the ARCore Extensions package pursuant to the Google Privacy Policy and the Google APIs Terms of Service. You can opt out of this.
What's new in ARCore v1.13.0
This release adds the following notable changes.
Support for using ARCore Extensions for Unity's AR Foundation to build iOS apps with Cloud Anchors.
Support for Environmental HDR lighting estimation in Sceneform.
See the following release notes for additional bug fixes and other breaking changes.
What's new in ARCore v1.12.0
This release adds the following changes:
Addition of the Augmented Faces feature to iOS. For more information, see this overview, quickstart, and developer guide.
Support for using ARCore Extensions for Unity's AR Foundation to build Android apps with Cloud Anchors.
The following changes to Cloud Anchors:
- To comply with our updated privacy requirements for using ARCore SDKs 1.12 or later, you must disclose the use of Cloud Anchors prominently in your application by including the following text, as well as a link to learn more, on a notice screen: “To power this session, Google will process visual data from your camera.” You can do this by implementing the recommended user notice flow available in our Cloud Anchor sample apps.
For more details, refer to User privacy requirements.
For more details on Cloud Anchors:
Android:
Android NDK:
iOS:
Unity:
ARCore Extensions:
What's new in ARCore v1.11.0
This release adds the following changes:
The ARCore service has been renamed to Google Play Services for AR. On Google Play devices, it is now distributed as part of Google Play Services.
ARCore's camera configs target 60 fps on supported devices and prioritizes using the depth sensor on devices that have one. You can use new camera config filters to limit the camera capture frame rate to 30 fps, prevent ARCore from using a depth sensor, or filter based on both options.
For more details on camera configs:
Android:
Android NDK:
Unity:
What's new in ARCore v1.10.0
This release adds new Environmental HDR lighting estimation capabilities to the Lighting Estimation API for Android, Android NDK, and Unity.
These APIs use machine learning to analyze the input camera image and estimate environmental lighting. You can use this lighting estimation data to render extremely realistic lighting, including a primary directional light, shadows, ambient lighting, specular highlights and reflections on virtual objects. The result is virtual content that feels more realistic.
For more details:
Android:
Android NDK:
Unity:
What's new in ARCore v1.9.0
New in ARCore SDK for Android
This release adds these new APIs and features:
Scene Viewer is an immersive viewer that enables AR experiences from your website. It lets Android mobile device users easily place, view, and interact with web-hosted 3D models in their environment.
New Augmented Images features:
ARCore now tracks moving Augmented Images. Examples of moving images are an advertisement on a passing bus or an image on a flat object held by a user as they move their hand around.
After an image has been detected, ARCore is able to continue tracking the image's position and orientation, even if the image has temporarily moved out of the camera view.
Use
AugmentedImage#getTrackingMethod()
(Java) orArAugmentedImage_getTrackingMethod()
(NDK) to determine whether the Augmented image is currently being tracked by the camera (FULL_TRACKING
), or is being tracked based on its last known position (LAST_KNOWN_POSE
).
Cloud Anchors documentation now includes a more detailed explanation of how anchors are hosted and resolved.
New in ARCore SDK for Unity
New Augmented Images features:
ARCore now tracks moving Augmented Images. Examples of moving images might be an advertisement on a passing bus or an image on a flat object held by a user as they move it around.
After an image has been detected, ARCore is able to continue tracking the image's position and orientation, even if the image has temporarily moved out of the camera view.
The new
AugmentedImage.GetTrackingMethod()
API enables your app to determine whether the Augmented image is currently being tracked by the camera (FullTracking
), or is being tracked based on its last known position (LastKnownPose
).
Cloud Anchors documentation now includes a more detailed explanation of how anchors are hosted and resolved.
New in ARCore SDK for iOS
Support for these devices:
Fifth-generation iPad Mini
Third-generation iPad Air
Cloud Anchors documentation now includes a more detailed explanation of how anchors are hosted and resolved.