En agosto de 2020, los Servicios de Google Play para RA (ARCore) quitaron la compatibilidad con las apps solo de 32 bits en algunos dispositivos de 64 bits. Es posible que, en una próxima versión de ARCore, se quite sin previo aviso la compatibilidad con las apps habilitadas para ARCore solo de 32 bits en los dispositivos de 64 bits restantes. Las apps de solo 32 bits habilitadas para ARCore que se ejecutan en dispositivos de 32 bits no se ven afectadas y siguen siendo compatibles.
Si publicaste una arquitectura de 32 bits únicamente (p.ej., armeabi-v7a
) de tu app habilitada para ARCore sin publicar la versión correspondiente de 64 bits (arm64-v8a
) para dispositivos de 64 bits, debes actualizarla con una versión de 64 bits compatible para dispositivos de 64 bits.
Las apps de solo 32 bits compatibles con ARCore que no se actualicen no crearán una sesión de ARCore y podrían fallar cuando se intente iniciar una sesión de realidad aumentada (RA) en dispositivos de 64 bits afectados.
Si configuras el atributo android:use32bitAbi="true"
en el archivo AndroidManifest.xml
de tu app, esta solo usará bibliotecas de 32 bits. Cualquier experiencia de RA en tu app intentará usar ARCore en modo de 32 bits. Sin embargo, las bibliotecas de 32 bits no estarán presentes en el servicio de los Servicios de Google Play para RA en algunos dispositivos de 64 bits. Sin estas bibliotecas, tu app no podrá crear una sesión de ARCore y podría fallar cuando intente iniciar una sesión de realidad aumentada (RA) en los dispositivos de 64 bits afectados. Esto afecta tanto las experiencias de RA nativas como las basadas en WebXR dentro de un componente de WebView.
Requisito de 64 bits de Google Play Store
El requisito de ARCore de 64 bits descrito en la sección anterior se aplica a todos los dispositivos de 64 bits, independientemente de la versión de Android y el nivel de API. Este requisito es independiente y no está relacionado con el requisito de 64 bits de Google Play que entró en vigor el 1 de agosto de 2019, el cual se evalúa a nivel de lanzamiento de la app y solo se aplica a los APKs o paquetes de aplicación que se distribuyen a dispositivos con Android 9 Pie (nivel de API 28) o versiones posteriores.
Información sobre la compatibilidad con ABI de ARCore
ARCore te permite compilar apps que admitan las siguientes ABI de Android:
32 bits (p.ej.,
armeabi-v7a
) y de 64 bits (arm64-v8a
) orientadas a dispositivos físicos compatibles con ARCoreApps de 32 bits (
x86
) y 64 bits (x86_64
) que se ejecuten en un Android Emulator
Cuando compilas una app compatible con ARCore, el sistema de compilación de Android incluye una o más bibliotecas nativas de ARCore (lib/…/libarcore_sdk*.so
) para las ABI de Android a las que se orienta tu app.
Anteriormente, las apps de solo 32 bits compatibles con ARCore podían ejecutarse en dispositivos de 32 y 64 bits. En agosto de 2020, se dejaron de incluir las bibliotecas nativas de 32 bits en algunos dispositivos de 64 bits en los Servicios de Google Play para RA (ARCore), por lo que solo las apps de 32 bits compatibles con ARCore ya no podían ejecutarse en los dispositivos de 64 bits afectados. En una versión futura, es posible que también se quite sin previo aviso la compatibilidad con las apps de 32 bits solo compatibles con ARCore en los dispositivos restantes de 64 bits.
Las apps de solo 32 bits compatibles con ARCore que no se actualicen no crearán una sesión y podrían fallar cuando se intente iniciar una sesión de realidad aumentada (RA) en dispositivos de 64 bits afectados, en particular:
SDK de ARCore | Detalles del error de creación de la sesión |
---|---|
SDK de ARCore para Android (NDK) |
ArSession_create y ArSession_createWithFeatures mostrarán AR_ERROR_FATAL .
|
SDK de ARCore para Android (Java) |
Los constructores de sesión, Session(Context) y Session(Context, Set<Session.Feature>) , mostrarán una FatalException .
|
SDK de ARCore para Unity |
Cuando habilitas el componente ARCoreSession , que suele encontrarse en el prefab del dispositivo ARCore, ARCore no podrá crear una sesión de ARCore, y Session.Status será SessionStatus.FatalError .
|
AR
Foundation (Unity) + Complemento de ARCore XR |
La app dejará de renderizarse (pantalla negra) cuando intente iniciar una sesión de RA, debido a una falla en el subproceso principal mientras se intenta cargar bibliotecas nativas de ARCore de 32 bits inexistentes. |
Cómo determinar si se debe actualizar tu app
Para verificar si tu app publicada incluye las bibliotecas nativas de ARCore necesarias para admitir dispositivos de 64 bits, sigue estos pasos:
Abre Google Play Console.
Selecciona tu app compatible con ARCore.
Expande la versión activa de la app para verificar que las plataformas nativas incluyan compatibilidad con 64 bits (
arm64-v8a
).
Cómo actualizar la app para que sea compatible con dispositivos de 64 bits
Si quieres actualizar una app existente solo de 32 bits habilitada para ARCore a fin de que incluya bibliotecas nativas de 64 bits, haz lo siguiente:
Actualiza tu proyecto para usar el SDK de ARCore más reciente.
Compila tu app y publícala con Google Play Console.
Google Play verificará que tu app cumpla con el requisito de 64 bits de Google Play Store que entró en vigencia el 1 de agosto de 2019. Para asegurarte de que tu app habilitada para ARCore incluya compatibilidad con 64 bits (arm64-v8a
) en todos los dispositivos de 64 bits, independientemente de la versión de Android o el nivel de API.