Cómo Android Go puede ayudar a los teléfonos Android más antiguos a ejecutar Android 8.1 Oreo

Android Go es la versión simplificada de Android de Google basada en Android 8.1 Oreo, y pretende ser una versión optimizada de Android para dispositivos de gama baja con 1 GB de RAM o menos. Se anunció en mayo pasado en la conferencia de desarrolladores de Google I / O, y finalmente se revelaron más detalles en diciembre de ese mismo año. Se dijo que estaba hecho para la próxima generación de dispositivos de nivel de entrada, para garantizar que aquellos en los países en desarrollo aún puedan usar teléfonos inteligentes que funcionen para acceder a Internet y usar aplicaciones.

Go tiene una amplia variedad de optimizaciones y mejoras de rendimiento, que incluyen ocupar un 50 por ciento menos de espacio de almacenamiento que una instalación promedio de Android Oreo. Gracias a Android Runtime (ART) y las optimizaciones del kernel también, un dispositivo con Android Go se ejecutará, en promedio, un 15 por ciento más rápido que en una instalación normal de Android Oreo en el mismo dispositivo. Estas optimizaciones se realizan a través de una serie de configuraciones de compilación especializadas realizadas por Google, que explicaremos más adelante.

Android Go también se beneficia de aplicaciones especiales "Go", como Files Go, YouTube Go y Google Maps Go. Estas son versiones livianas de aplicaciones hechas por Google, que han reducido los requisitos para ejecutarse de manera más eficiente. Esto significa que aquellos con dispositivos Android Go pueden disfrutar de la mayoría de los mismos beneficios que los usuarios normales de Android Oreo también, haciendo uso del conjunto de aplicaciones de Google sin tener que gastar mucho dinero en un dispositivo insignia o incluso en un dispositivo de presupuesto ligeramente más caro.

Se trata de que Google expanda su mercado. Sin embargo, surge la pregunta de que si Android Go consiste principalmente en una configuración de compilación y un conjunto de aplicaciones de Google optimizadas, ¿pueden los desarrolladores hacer sus propias compilaciones de Android Go? En resumen, sí podemos .

Algunos desarrolladores de LineageOS ya están construyendo ROM personalizadas optimizadas para Android Go

Ya estamos viendo una especie de aceptación en Android Go por parte de algunos desarrolladores de ROM personalizados, como el Reconocido Desarrollador AdrianDC, con su trabajo en LineageOS 15.1 con configuraciones de compilación de Android Go para varios teléfonos Sony antiguos. Los dispositivos en cuestión son Sony Xperia SP, Sony Xperia T, Sony Xperia V y Sony Xperia TX. Todos estos dispositivos se remontan a los años 2012 y 2013, pero recibirán LineageOS 15.1 basado en Android 8.1 Oreo utilizando una configuración de compilación de Android Go, que puede permitir que los dispositivos ejecuten aplicaciones Google 'Go' de manera fluida, en caso de que se establezca un Android Go de Gapps finalmente se lanzará.

Cualquier mantenedor individual de LOS debería poder introducir una compilación configurada para Android Go, siendo un conjunto de configuraciones de compilación y otras optimizaciones. Lo que esto significa es que aquellos que pueden haber comprado el Sony Xperia T, por ejemplo, un dispositivo con Android 4.0.4 Ice Cream Sandwich en el lanzamiento, podrán usar una compilación mejor optimizada de Android 8.1 Oreo en el dispositivo, haciendo uso de aplicaciones como YouTube Go y Google Maps Go. No funcionará a niveles de rendimiento emblemáticos, pero debería ser utilizable, especialmente para un dispositivo que se remonta a 2012.


Cómo Android Go puede ayudar a los teléfonos Android más antiguos a ejecutar Android Oreo

Las configuraciones de compilación en Android son un conjunto de parámetros que pertenecen a varios aspectos del sistema Android que se aplican al compilar la imagen del sistema para flashear en un dispositivo. Por lo general, estos cambian el comportamiento del sistema, y ​​las principales optimizaciones de Android Go provienen de estas configuraciones de compilación.

Las configuraciones de compilación utilizadas para compilar Android Go.

Hablé con el desarrollador reconocido Joshuous, quien me ayudó mucho a comprender los cambios que se estaban produciendo, lo que realmente hace que Android Go funcione. Algunas de estas configuraciones de compilación no se pueden cambiar sin volver a compilar, y son parte del modelo de la propia ROM. Estas son las banderas totalmente capitalizadas.

Sin embargo, todos estos indicadores pertenecen a muchos aspectos diferentes de Android relacionados con el almacenamiento y el uso de la memoria. Estos incluyen la gestión automática de almacenamiento, el asesino de memoria baja de Android, el optimizador dex ( d alvik ex ecutable files) y los límites de RAM para ejecutar aplicaciones. Los archivos APK consisten en estos archivos DEX, por lo que, en cierto modo, es posible pensar en un archivo APK como simplemente un archivo ZIP que contiene muchos archivos .dex, que en realidad es lo que Android ejecuta cuando ejecuta una aplicación. La administración automática de almacenamiento será controlada por la aplicación Files Go, no por el sistema Android.

Android Go Utilities Modo de RAM baja de Android

En Android 4.4 KitKat, Google introdujo una nueva bandera llamada "low-ram", que tenía como objetivo admitir dispositivos con 512 MB de RAM. Hace una serie de optimizaciones para el sistema. Estos cambios son muy beneficiosos para dispositivos con menos RAM.

Gestión de memoria mejorada

  • Configuraciones de kernel de ahorro de memoria validadas: cambie a ZRAM.
  • Elimine los procesos en caché si va a estar sin caché y es demasiado grande.
  • No permita que los servicios grandes se vuelvan a colocar en los Servicios A (para que no puedan hacer que se elimine el iniciador).
  • Elimine procesos (incluso los que normalmente no se pueden matar, como el IME actual) que se vuelven demasiado grandes en el mantenimiento inactivo.
  • Serializar el lanzamiento de servicios en segundo plano.
  • Uso optimizado de la memoria de dispositivos con poca RAM: niveles de ajuste más estrictos de falta de memoria (OOM), cachés de gráficos más pequeños, etc.

Estos cambios anteriores básicamente aseguran que el sistema se asegure de usar RAM comprimida cuando sea posible, mediante el uso de ZRAM. ZRAM es básicamente un disco RAM (un medio de almacenamiento que usa RAM, mucho más rápido que el almacenamiento normal en el dispositivo) como un archivo de intercambio. Se utiliza un archivo de intercambio cuando el uso de RAM es alto y las aplicaciones aún requieren memoria. Esto es mucho, mucho más lento que la RAM y debe evitarse siempre que sea posible. En esencia, simplemente comprime el contenido de la memoria.

Memoria del sistema reducida

  • Procesos recortados de system_server y SystemUI (guardado varios MB).
  • Precargar cachés dex en Dalvik (guardado varios MB).
  • Opción validada de JIT-off (ahorra hasta 1.5MB por proceso).
  • Reducción de la sobrecarga de caché de fuentes por proceso.
  • Introdujo ArrayMap / ArraySet y se utilizó ampliamente en el marco como un reemplazo de huella más ligera para HashMap / HashSet.

Lo que sucede principalmente aquí es solo reducir el consumo de memoria de varios procesos que se ejecutan en el dispositivo, para ser lo más conservador posible. Se han eliminado los servicios esenciales del sistema para utilizar la menor cantidad de memoria posible en segundo plano, ya que cada megabyte de RAM es importante.

Android Go utiliza un asesino modificado de baja memoria y optimizaciones dex

Dado que Android Go es principalmente para dispositivos con 1 GB de RAM o menos, deberá haber una administración de memoria más agresiva. Android Go modifica el Asesino de memoria baja (LMK) de diferentes maneras. Primero, cuando se usa una gran cantidad de RAM, el asesino de poca memoria pasa a un estado de "presión crítica". Esto se debe a que cuando el uso de memoria es alto, el sistema se volverá lento debido a que constantemente intenta acceder a un archivo de intercambio en el almacenamiento del dispositivo. Mantener la RAM limpia evitará que el sistema necesite usar este archivo de intercambio y evitará que se agote la memoria. La pérdida de memoria ocurre cuando la memoria del dispositivo está llena y constantemente tiene que buscar el archivo de intercambio en el almacenamiento del dispositivo, lo que degrada el rendimiento en gran medida.

Los servicios y los servicios WiFi están configurados en "perfil de velocidad", lo que significa que los métodos seleccionados en estos servicios se compilan con anticipación (AOT). (Un método se refiere a un conjunto de código que se puede llamar en cualquier punto por su nombre). Esto reduce el uso de RAM y el almacenamiento, ya que el sistema Android no necesitará recompilar continuamente los servicios esenciales que se ejecutan en el dispositivo. Mientras tanto, los APK compartidos están configurados para "acelerar", que está diseñado para proporcionar una vida útil adicional de la batería y ciclos de CPU adicionales al optimizar las instrucciones dex para obtener un mejor rendimiento.

En términos de optimizaciones de dex, Android Go hace bastante. Para empezar, después de 10 días, degradará una aplicación si no se usa para ahorrar espacio. La degradación aquí no se refiere a la disminución del número de versión real de la aplicación, sino que significa que se borrará el dalvik_cache para la aplicación. El caché Dalvik se usa para que el dispositivo no necesite recompilar aplicaciones, sino que solo compila las partes más necesarias y lo almacena en caché. El resto se compila utilizando el compilador Just in Time (JIT) cuando se ejecuta la aplicación. Sin embargo, si la aplicación no se utiliza durante 10 días, también se eliminan las partes esenciales de la aplicación que se compilan previamente. Esto se hace para liberar tanto espacio como sea posible. Otro cambio simple es no permitir que el uso de RAM de una aplicación supere los 256 MB para que una aplicación no pueda usar toda la RAM del dispositivo.


¿Es Android Go el futuro del desarrollo de ROM personalizado en dispositivos de gama baja?

Actualmente, no sabemos la respuesta a esto, pero el futuro parece brillante para el desarrollo de ROM personalizado en dispositivos más antiguos. Puede haber otros problemas para lograr que una versión más reciente de Android se ejecute en un dispositivo, pero en teoría, una actualización a un Android Go más optimizado basado en Android Oreo debería hacer que un dispositivo más antiguo y de gama baja funcione mejor.