El último ARTwork en cientos de millones de dispositivos

Publicado por Serban Constantinescu, director de producto

¿No sería fantástico si cada actualización mejorara los tiempos de inicio, la velocidad de ejecución y el uso de memoria de tus aplicaciones? Actualizaciones del sistema Google Play para Tiempos de ejecución de Android (ART) haz precisamente eso. Estas actualizaciones ofrecen mejoras de rendimiento, las últimas correcciones de seguridad y unifican las API clave de OpenJDK en cientos de millones de dispositivos, incluidos todos los dispositivos Android 12+ y pronto Android Go.

ART es el motor detrás del sistema operativo (SO) Android. Proporciona el tiempo de ejecución principal y las API en las que dependen todas las aplicaciones y la mayoría de los servicios del sistema operativo. Tanto Java como Kotlin están compilados en formato código de bytes realizado por la ART. Las mejoras en el tiempo de ejecución, el compilador y la API principal benefician a todos los desarrolladores al hacer que las aplicaciones se ejecuten más rápido y la compilación de códigos de bytes sea más eficiente.

Si bien los fabricantes de dispositivos pueden personalizar partes de Android, ART es el mismo para todos los dispositivos y las actualizaciones del sistema Google Play permiten un camino hacia actualizaciones modulares.

Modularizar el sistema operativo

Android se diseñó originalmente para actualizaciones monolíticas, lo que significa que los componentes del sistema operativo no debían tener límites de API claros. Esto se debe a que todo el software dependiente se crearía en conjunto. Sin embargo, esto hizo que ART fuera difícil de actualizar independientemente del resto del sistema operativo. Nuestro primer desafío fue desenredar las dependencias de ART y crear límites de API claros, bien definidos y probados. Esto nos permitió modularizar ART y hacerlo actualizable de forma independiente.

Ilustración de un coche de carreras con parte del motor colgando sobre el capó.  Una flecha curva indica dónde debe ir esta parte.

Como parte central del sistema operativo, ART tuvo que abrir nuevos caminos y diseñar nuevos límites del sistema operativo. Estos nuevos límites eran tan extensos que agregarlos y actualizarlos manualmente llevaría demasiado tiempo. Por lo tanto, hemos implementado la generación automática de estos mediante introspección en el sistema de compilación.

Otro ejemplo es el desenrollado de pila, que informa las últimas funciones ejecutadas cuando se detecta un problema. Antes de la modularización del sistema operativo, todo el código de desapilado se creaba en conjunto y podía cambiar entre versiones de Android. Esto hizo que la transición fuera aún más desafiante, ya que solo hay una versión de ART implementada en muchas versiones de Android, tuvimos que crear un nuevo límite de API y diseñarla para que fuera compatible con versiones más nuevas de ART. APÉNDICE módulo en dispositivos que ya no reciben actualizaciones completas del sistema operativo.

Recientemente, para Android 14, refactorizamos la interfaz entre el Administrador de paquetes, el servicio que determina cómo se instalan y actualizan las aplicaciones, y ART. Esto mueve el límite del sistema operativo desde la línea de comando ART dex2oat a una interfaz bien definida que permite optimizaciones futuras, como un control más preciso sobre cómo se compila.

La capacidad de actualización de ART también introdujo nuevos desafíos. Por ejemplo, la colección de bibliotecas Java, denominada Boot Classpath, necesitaba volverse a compilar de forma segura para lograr un buen rendimiento. Esto requirió la introducción de un nuevo estado seguro para la compilación durante el inicio, así como un modo de compilación JIT alternativo.

En dispositivos más antiguos, la compilación segura se produce en el primer reinicio después de una actualización de ART. En dispositivos más nuevos son compatibles Marco de virtualización de Androidla compilación se produce mientras el dispositivo está inactivo, en un enclave llamado compilación aislada – ahorrando hasta 20 segundos de tiempo de inicio.

Prueba del módulo ART APEX

El módulo ART APEX es un software complejo con un orden de magnitud más API que cualquier otro Otro módulo APEX. También es compatible con una cuarta parte de las API de desarrollador disponibles en el SDK de Android. Además, ART tiene un compilador que pretende aprovechar al máximo el hardware subyacente generando instrucciones específicas del chipset, como brazo SVE. Esto, junto con las múltiples versiones del sistema operativo en el que debe ejecutarse el módulo ART APEX, hace que las pruebas sean un desafío.

Primero modularizamos el marco de prueba desde el lanzamiento por plataforma (p. ej. Android CTS) a por módulo. Hicimos esto introduciendo un Mainline Test Suite (MTS) específico de ART, que prueba tanto el compilador como el tiempo de ejecución, así como las API principales de OpenJDK, mientras recopila estadísticas de cobertura de código.

Nuestro objetivo es una cobertura de API del 100% y una cobertura de línea alta, especialmente para las API nuevas. Con HWA-san Y difuminarTodas las pruebas descritas anteriormente contribuyen a una enorme carga de pruebas que debe distribuirse en varios dispositivos para garantizar que se complete en un período de tiempo razonable.

Ilustración del marco de prueba modularizado.

Probamos la próxima versión de ART todos los días compilando más de 18 millones de APK y ejecutando pruebas de compatibilidad de aplicaciones y evaluaciones comparativas de lanzamiento, rendimiento y memoria en una variedad de dispositivos Android que replican la diversidad de nuestro ecosistema lo más fielmente posible. Una vez que pasemos las pruebas con todos los modos de compilación posibles, todos los algoritmos de Garbage Collector y las versiones de sistema operativo compatibles, comenzaremos a implementar la próxima versión de ART gradualmente.

Beneficios de las actualizaciones del sistema ART de Google Play

Al actualizar ART independientemente de las actualizaciones del sistema operativo, los usuarios obtienen las últimas optimizaciones de rendimiento y correcciones de seguridad lo más rápido posible, mientras que los desarrolladores obtienen mejoras de OpenJDK y optimizaciones del compilador que benefician tanto a Java como a Kotlin.

Como se muestra en el cuadro a continuación, las optimizaciones del tiempo de ejecución y del compilador en la actualización ART 13 dieron como resultado mejoras en el lanzamiento de aplicaciones en el mundo real de hasta un 30 % en algunos dispositivos.

Gráfico del tiempo de inicio promedio de la aplicación que muestra el tiempo de inicio en milisegundos con una mejora de hasta el 30 % en 12 semanas en dispositivos que ejecutan la última actualización del sistema Google Play ART.

Las actualizaciones de ART nos permiten implementar correcciones con frecuencia con poco esfuerzo adicional por parte de nuestros socios del ecosistema. Incluyen la propagación de correcciones de OpenJDK ascendentes a dispositivos Android lo más rápido posible, así como correcciones de seguridad del compilador y del tiempo de ejecución, como CVE-2022-20502que fue detectado por nuestras pruebas de fuzzing automatizadas.

Para los desarrolladores, las actualizaciones de ART significan que ahora pueden acceder a las últimas funciones de programación. ART 13 proporcionó la funcionalidad principal del lenguaje OpenJDK 11, que fue la adopción más rápida jamás realizada de una nueva versión de OpenJDK en dispositivos Android.

Que sigue

En los próximos meses lanzaremos ART 14 en todos los dispositivos compatibles. ART 14 incluye compatibilidad con OpenJDK 17 junto con un nuevo compilador y optimizaciones de tiempo de ejecución que mejoran el rendimiento y reducen el tamaño del código. ¡Estén atentos para más detalles sobre ART 14!

Java y OpenJDK son marcas comerciales o marcas comerciales registradas de Oracle y/o sus filiales.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *