Android Oreo venía con un cambio en la arquitectura de Android destinado a hacer más fácil las actualizaciones del sistema: Project Treble. Este cambio de arquitectura llegaba con un interesante efecto secundario: instalar versiones de Android de forma «fácil» con las GSI, o imágenes del sistema genéricas.
Han pasado unos años desde la primera vez que oímos hablar de Treble y, aunque las imágenes GSI siguen siendo más un experimento que la forma universal sencilla, es técnicamente posible usarlas para cambiar la versión de Android o incluso instalar algunas ROM selectas. Te explicaremos a continuación qué es una GSI, cuáles son los requisitos para instalarlas y cómo se instalan.
Qué es una imagen GSI
Empecemos por el principio. GSI son las siglas de Generic System Image y su nombre es bastante descriptivo: son imágenes del sistema genéricas, basadas en AOSP y sin ningún tipo de modificación. Es decir, son imágenes del sistema de AOSP que no están pensadas en un hardware especial, sino que deberían poder instalarse en cualquier móvil Android reciente que cumpla con los requisitos que veremos en el próximo punto.
GSI es un concepto estrechamente relacionado con Treble, que supone una separación de la implementación de bajo nivel como los controladores del hardware del resto, de modo que las nuevas versiones del sistema sólo deban actualizar el sistema sin preocuparse del soporte para revisar y actualizar también los controladores. Las imágenes GSI se aprovechan de esta separación, pudiendo por tanto instalarse en distintos dispositivos y de ahí el «genérico» de su nombre.
En la práctica, las GSI se usan principalmente de tres formas. Google las utiliza durante su proceso de certificación de terminales para hacer distintos tests, los desarrolladores las pueden usar para poder probar sus aplicaciones en versiones futuras de Android sin necesidad de usar un emulador o esperar a la beta oficial para dispositivo y, además, últimamente la comunidad de desarrolladores de ROM está experimentando en lanzar versiones GSI de sus ROM, que en ocasiones son más fáciles de instalar y son más universales que las tradicionales.
Qué necesitas para instalar una imagen GSI
Project Treble y las GSI intentan facilitar la instalación de una versión del sistema distinta a la que viene en el móvil, pero esto sigue siendo un proceso delicado y complicado. Hay muchas partes móviles y, aunque Google nos prometió que estaban trabajando en un modo de simplificar el asunto, lo cierto es que en 2020 sigue siendo un proceso no demasiado intuitivo: un móvil debe cumplir varios requisitos para poder flashear una GSI.
Para empezar, el móvil debe haberse lanzado con soporte para Project Treble de fábrica. Hay varios modos de comprobarlo, desde aplicaciones hasta usar el comando de ADB adb shell getprop ro.treble.enabled
. Si el resultado es false
, el móvil no es compatible. Si el resultado es true, lo es, aunque deberías hacer una comprobación adicional para ver el grado de compatibilidad.
La lista de requisitos es larga y exhaustiva, pero es importante asegurarse de que el móvil es compatible antes de proceder
Tras conectar el móvil mediante ADB, necesitarás escribir el comando adb shell cat /system/etc/ld.config.version_API.txt \ | grep -A 20 "[vendor]"
, cambiando version_API por la versión el número de la API de la versión instalada. Por ejemplo, en Android 10 lo deberás cambiar por un 29, y en Android 11 por un 30. El resultado será un torrente de información como el siguiente:
Debajo del apartado [vendor] deberás buscar el valor de namespace.default.isolated. Si es true
, el móvil es completamente compatible con Treble y puedes instalar cualquier versión de Android mediante una GSI. Si no lo es, todavía puedes instalar imágenes GSI en un móvil compatible con Treble que cumpla el resto de requisitos, pero deberá ser la misma versión de Android que está instalada. Por ejemplo, en un móvil Samsung con Android 10 y One UI, podrías instalar una GSI de AOSP con Android 10, pero no la de Android 11.
Este es el requito más importante, aunque no el único. El móvil necesita tener el bootloader desbloqueado. Puedes comprobar si es tu caso de varias maneras. Como norma general, si en las opciones para desarrolladores te aparece la opción Desbloqueo OEM, es posible desbloquearlo con el comando el comando de fastboot fastboot oem unlock
. En los móviles Xiaomi, puedes usar este método.
Cómo flashear un GSI en un móvil con Treble
Vale, tu móvil es compatible con Treble y GSI, ¿y ahora qué? Lo primero de todo, recuerda que flashear el móvil puede brickearlo, provocar reinicios en bucle u otros problemas. No lo hagas a no ser que estés familiarizado con este tipo de procesos y tengas experiencia recuperando el móvil de situaciones comprometidas similares. Si tienes datos importantes en el móvil, imprescindible es hacer una copia de seguridad completa.
Por supuesto, necesitarás descargar la imagen GSI que quieres instalar. Las oficiales de Google las puedes encontrar aquí, y es importante que te descargues la apropiada para la arquitectura de tu móvil. Algunas ROM, como LineageOS, están experimentando también con GSI.
Descarga la imagen en tu PC, conecta el móvil al PC mediante un cable USB y reinicia el móvil en modo fastboot. El proceso varía de un móvil a otro, pero generalmente se logra encendiendo el móvil mientras mantienes pulsada la tecla de subir o bajar volumen y el botón de encendido. También puedes hacerlo con el comando de ADB adb reboot bootloader
.
Necesitarás entonces usar fastboot (lo puedes descargar de aquí, sin necesidad de bajar todo Android Studio) para realizar una serie de procesos necesarios. El primero de todo es borrar la partición del sistema. Es el punto de no retorno: piénsatelo dos veces antes de proceder.
Antes de flashear la imagen GSI, deberás ejecutar otro comando para deshabilitar el inicio verificado, de modo que la nueva versión del sistema operativo pueda arrancar. Para ello es necesario flashear la imagen vbmeta.img, que se incluye en el archivo ZIP del GSI descargado de Google. Para hacerlo, necesitas usar este comando:
fastboot --disable-verification flash vbmeta vbmeta.img
A estas alturas sólo falta el flasheo final de la GSI en cuestión. El proceso es exactamente el mismo de antes, cambiando únicamente el comando para incluir el nombre del archivo de imagen que hemos descargado (por ejemplo, system.img) y el nombre de la partición del sistema. Este es el comando:
fastboot -w flash system nombre_de_la_imagen.img
Si todo va bien, comenzará el proceso de flasheo y estará listo en unos segundos. Después puedes reiniciar el móvil y, con suerte, empezar a disfrutar de tu experimento con GSI. Ten en cuenta que el primer arranque siempre toma más tiempo que los sucesivos.
Desgraciadamente, el flasheo de GSI sigue siendo un proceso complejo, delicado y largo, aunque esperamos que Google simplifique el proceso en el futuro. Si tienes algún problema con tu móvil tras hacerlo -por ejemplo, si se reinicia en bucle o no arranca- la mejor solución es descargar el firmware original y flashearlo mediante flashboot, generalmente con el archivo flash-all.bat que automatiza el proceso.