In August 2020, Google Play Services for AR (ARCore) removed support for 32-bit-only apps on some 64-bit devices. Support for 32-bit-only ARCore enabled apps on the remaining 64-bit devices may be removed without notice in an upcoming ARCore release. 32-bit-only ARCore enabled apps running on 32-bit devices are unaffected and continue to be supported.
If you published a 32-bit-only (e.g.,
armeabi-v7a) version of your
ARCore-enabled app without publishing a corresponding 64-bit (
version for 64-bit devices, you must update your app with a compatible 64-bit
version for 64-bit devices.
32-bit-only ARCore-enabled apps that aren't updated will fail to create an ARCore session and might crash when attempting to start an augmented reality (AR) session on affected 64-bit devices.
If you set the
android:use32bitAbi="true" attribute in your
AndroidManifest.xml, your app will only use 32-bit libraries. Any AR
experiences in your app will attempt to use ARCore in 32-bit mode. However, the
32-bit libraries will not be present in the Google Play Services for AR
service on some 64-bit devices. Without these libraries, your app will fail to
create an ARCore session and might crash when attempting to start an augmented
reality (AR) session on those affected 64-bit devices. This affects both native
AR experiences and WebXR-based AR experiences inside a WebView component.
Google Play Store 64-bit requirement
The ARCore 64-bit requirement described in the preceding section applies to all 64-bit devices, regardless of Android version and API level. This requirement is separate and not related to the Google Play 64-bit requirement that went into effect on August 1, 2019, which is evaluated at the app release level and applies only to APKs or app bundles that are distributed to devices running Android 9 Pie (API level 28) or later.
Understanding ARCore ABI support
ARCore lets you build apps that support the following Android ABIs:
armeabi-v7a) and 64-bit (
arm64-v8a) apps that target physical ARCore supported devices
x86) and 64-bit (
x86_64) apps that run inside an Android Emulator
When you build an ARCore-enabled app, the Android build system includes one or
more ARCore native libraries (
lib/…/libarcore_sdk*.so) for the Android ABIs
targeted by your app.
32-bit-only ARCore-enabled apps were previously able to run on both 32-bit and 64-bit devices. In August 2020 Google Play Services for AR (ARCore) stopped including 32-bit native libraries on some 64-bit devices, at which time 32-bit only ARCore-enabled apps were no longer able to run on affected 64-bit devices. In a future release, support for 32-bit-only ARCore-enabled apps may also be removed without notice from the remaining 64-bit devices.
32-bit-only ARCore-enabled apps that aren't updated will fail to create a session and might crash when attempting to start an augmented reality (AR) session on affected 64-bit devices, specifically:
|ARCore SDK||Session creation failure details|
|ARCore SDK for Android (NDK)||
|ARCore SDK for Android (Java)||
The Session constructors,
|ARCore SDK for Unity||
When you enable the
+ ARCore XR Plugin
|The app will stop rendering (black screen) when the app tries to start an AR session, due to a crash on the main thread while trying to load non-existent 32-bit ARCore native libraries.|
Determining whether your app must be updated
To check whether your published app includes the required native ARCore libraries to support 64-bit devices:
Open the Google Play Console.
Select your ARCore-enabled app.
Expand the app's active release to verify that the Native platforms includes 64-bit (
Updating your app to support 64-bit devices
To update an existing 32-bit-only ARCore-enabled app to include 64-bit native libraries:
Update your project to use the latest ARCore SDK.
Build your app and publish it using the Google Play Console.
Google Play will verify that your app meets the Google Play Store
that previously went into effect on August 1, 2019. To ensure that your
ARCore-enabled app includes 64-bit (
arm64-v8a) support for all 64-bit devices,
regardless of Android version or API level.