La mayoría de los teléfonos Android cuentan con chipsets ARM. Sin embargo, muchos dispositivos ChromeOS usan chips x86. La diferencia no es importante para las apps escritas en Kotlin o Java. Sin embargo, para las apps escritas en el NDK de Android, incluidas las creadas con motores de juegos, el chipset del dispositivo puede ser una cuestión importante.
Lo ideal es que todas las apps con el código del NDK de Android se envíen con las cuatro ABI (interfaces binarias de aplicación) principales de Android: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) y x86_64.
De esta manera, cada dispositivo ofrece el mejor rendimiento con el menor consumo de batería. Por ejemplo, un archivo build.gradle basado en cmake puede contener lo siguiente:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}Tamaño del APK
Cada ABI de un APK monolítico aumenta su tamaño, Esto puede afectar el uso del disco de los usuarios y el tamaño de descarga de la app, y podría superar los límites de tamaño de Play Store. La mejor manera de evitar esto es usar Android App Bundles. que te permiten agrupar, con facilidad, las cuatro ABI desde Android Studio, pero no aumentan el tamaño de descarga para los usuarios. También facilitan el uso de Dynamic Delivery, lo que les permite a los usuarios descargar contenido de juegos de gran tamaño solo cuando se les solicita. Si los paquetes de aplicaciones no son una opción para ti, puedes usar la versión más antigua de APK múltiple para obtener un comportamiento similar.
32 bits vs. 64 bits
Todas las apps para Android deben proporcionar una versión de compilación de 64 bits. Una compilación de 32 bits es opcional para dispositivos ARM y x86. Consulta la documentación de 64 bits de Android para obtener más información.
Si bien solo proporcionar compilaciones de 64 bits reduce la cantidad de objetivos de compilación necesarios y la superficie de prueba, también se limitan los tipos de dispositivos que pueden ejecutar el juego. Por ejemplo, debido a otras limitaciones de hardware, muchas Chromebooks antiguas solo pueden ejecutar apps para Android de 32 bits, a pesar de contar con CPU de 64 bits. Para garantizar que la app pueda ejecutarse en esos dispositivos, incluye compatibilidad con 32 y 64 bits.
Nota: Todas las apps nuevas y actualizadas deben incluir una versión de 64 bits. Play Store dejó de ofrecer apps de 32 bits para dispositivos que pueden ejecutar apps de 64 bits. Muchas Chromebooks son compatibles con 64 bits, por lo que te recomendamos que actualices tu app lo antes posible para incluir una versión de 64 bits y garantizar la continuidad para los usuarios de tu app en ChromeOS.
Traducciones de ARM
Las Chromebooks x86 intentan traducir el código ARM siempre que sea posible. Sin embargo, la traducción ralentiza el rendimiento y aumenta el uso de la batería. Incluso los juegos simples deben considerar proporcionar compilaciones de x86 para brindar la mejor experiencia del usuario. Si no puedes proporcionar compilaciones x86, ten en cuenta que algunas Chromebooks x86 no pueden traducir el código arm64. En este caso, debes incluir las ABI arm32 y arm64 en tus compilaciones.
Si bien la traducción del código arm32 está disponible en todas las Chromebooks compatibles con Android, no todas las Chromebooks pueden traducir el código arm64. Eso significa que si el juego solo tiene objetivos de compilación arm64, no estará disponible para una gran cantidad de dispositivos ChromeOS. Si no puedes enviar objetos binarios x86, incluye las ABI arm32 y arm64 en tus compilaciones.
| ABI incluidas | Compatibilidad con ChromeOS |
|---|---|
arm64 | Baja |
arm32/arm64 | Buena (con traducción) |
arm32/arm64/x86_32/x86_64 | La mejor |