Una imagen genérica del sistema (GSI) es una imagen de sistema con configuraciones ajustadas para dispositivos Android. Se considera una implementación de Android pura con un código de proyecto de código abierto de Android (AOSP) no modificado que cualquier dispositivo Android que ejecute Android 8.1 o superior puede ejecutarse con éxito.
Los GSI se utilizan para ejecutar pruebas VTS y CTS-on-GSI. La imagen del sistema de un dispositivo Android se reemplaza con un GSI y luego se prueba con Vendor Test Suite (VTS) y Compatibility Test Suite (CTS) para garantizar que el dispositivo implemente las interfaces de proveedor correctamente con la última versión de Android. Después de ello cada proveedor de telefonía implementa su propia imagen del sistema personalizada y sus aplicaciones que viene por defecto en nuestro teléfono, como por ejemplo el logo de la compañía al iniciar nuestro teléfono, no diremos las marcas en si para no hacerles promoción a esas compañías de telefonía, es decir la OEM.
A partir de Android 9 (API nivel 28), las imágenes genéricas del sistema (GSI) están disponibles para los desarrolladores de apps durante todo el ciclo de lanzamiento de Android. Como desarrollador de apps, puedes instalar y ejecutar las últimas GSI de Android en una gran variedad de dispositivos Android existentes y en diferentes etapas de lanzamiento del sistema operativo Android, incluidas las fases de vistas previas y versiones Beta, para realizar pruebas de apps. De esta manera, tu app obtiene una cobertura de pruebas más amplia, con mucha más antelación que antes:
GSI incluye funcionalidades esenciales del sistema en todos los dispositivos que ejecutan Android 9 y versiones posteriores; en otras palabras, GSI no incluye las personalizaciones de los fabricantes de dispositivos. Es posible que veas comportamientos distintos en los siguientes casos:
Cómo verificar el cumplimiento del dispositivo
Las GSI solo funcionan en dispositivos que tienen las siguientes características:
1 - Ejecuta el siguiente comando para corroborar si es compatible con Treble:
También se puede comprobar con una APP la cual la podrás encontrar en Google Play haciendo una busqueda con la palabra Treble...
2 - Ejecuta el siguiente comando para verificar si es compatible con varias versiones:
En el resultado, busca namespace.default.isolated en la sección [vendor].
Si el valor de ese atributo es true, significa que el dispositivo es totalmente compatible con el kit de desarrollo nativo del proveedor (VNDK) y que puede usar cualquier versión del sistema operativo (SO) de GSI poserior a la versión del SO del dispositivo. Elige la más reciente.
Si el valor del atributo es false, significa que el dispositivo no cumple con todos los requisitos necesarios del VNDK y que solo puede usar la versión de GSI que coincida con la del SO del dispositivo. Por ejemplo, un dispositivo con Android 9 (API versión 28) que no cumple con los requisitos del VNDK solo puede cargar una imagen de GSI de Android 9.
3 - El tipo de arquitectura de CPU de GSI debe coincidir con la del dispositivo. Ejecuta el siguiente comando a fin de obtener la arquitectura de CPU correcta para la imagen de GSI:
El Android GSI actual tiene la siguiente configuración:
Los OEM no deben usar estas versiones de GSI para ejecutar y enviar pruebas de cumplimiento. Los OEM deben seguir consultando sus canales de comunicación existentes, como sus administradores técnicos de cuentas, para actividades relacionadas con pruebas de cumplimiento.
Los dispositivos Android pueden tener diferentes diseños, por lo que no hay un comando genérico o un conjunto de instrucciones para flashear un GSI para aplicar a todos los dispositivos. Consulte con el fabricante del dispositivo Android para obtener instrucciones explícitas de flasheo.
Utilice los siguientes pasos como guía general:
Los GSI se utilizan para ejecutar pruebas VTS y CTS-on-GSI. La imagen del sistema de un dispositivo Android se reemplaza con un GSI y luego se prueba con Vendor Test Suite (VTS) y Compatibility Test Suite (CTS) para garantizar que el dispositivo implemente las interfaces de proveedor correctamente con la última versión de Android. Después de ello cada proveedor de telefonía implementa su propia imagen del sistema personalizada y sus aplicaciones que viene por defecto en nuestro teléfono, como por ejemplo el logo de la compañía al iniciar nuestro teléfono, no diremos las marcas en si para no hacerles promoción a esas compañías de telefonía, es decir la OEM.
Compatibilidad de GSI en dispositivos
A partir de Android 9 (API nivel 28), las imágenes genéricas del sistema (GSI) están disponibles para los desarrolladores de apps durante todo el ciclo de lanzamiento de Android. Como desarrollador de apps, puedes instalar y ejecutar las últimas GSI de Android en una gran variedad de dispositivos Android existentes y en diferentes etapas de lanzamiento del sistema operativo Android, incluidas las fases de vistas previas y versiones Beta, para realizar pruebas de apps. De esta manera, tu app obtiene una cobertura de pruebas más amplia, con mucha más antelación que antes:
- Más cobertura de pruebas en dispositivos reales
- Más tiempo para solucionar problemas de compatibilidad de apps
- Más oportunidades para solucionar problemas de incompatibilidad en SO Android informados por desarrolladores de apps
- Nota: Deberías instalar una versión de GSI posterior a la versión de Android actualmente instalada en un dispositivo.
GSI incluye funcionalidades esenciales del sistema en todos los dispositivos que ejecutan Android 9 y versiones posteriores; en otras palabras, GSI no incluye las personalizaciones de los fabricantes de dispositivos. Es posible que veas comportamientos distintos en los siguientes casos:
- Interacciones que involucran la IU
- Flujos de trabajo que requieren nuevas funciones de hardware
Cómo verificar el cumplimiento del dispositivo
Las GSI solo funcionan en dispositivos que tienen las siguientes características:
- Tienen el bootloader desbloqueado.
- Son totalmente compatibles con Treble.
- Se lanzaron con Android 9 (API nivel 28) o versiones posteriores. Es posible que los dispositivos que se actualizaron a Android 9 desde una versión anterior no sean compatibles con las GSI.
- Advertencia: Si tratas de instalar una GSI en un dispositivo que no cumple con los requisitos, es posible que ya no puedas iniciarlo. Antes de realizar la instalación, asegúrate de verificar que el dispositivo cumpla con los requisitos y de seguir los pasos provistos por el fabricante. La instalación de GSI no es reversible. Para volver al sistema anterior, necesitarás un método de recuperación y la ROM del sistema original.
Android 8.0 rediseñó el marco del sistema operativo Android (en un proyecto conocido como Project Treble) para que sea más fácil, más rápido y menos costoso para los fabricantes actualizar los dispositivos a una nueva versión de Android. En esta nueva arquitectura, el lenguaje de definición de interfaz HAL (HIDL, pronunciado "hide-l") especifica la interfaz entre un HAL y sus usuarios, permitiendo que el marco de Android sea reemplazado sin reconstruir los HAL.
Para verificar si tu dispositivo puede usar GSI y para saber qué versión de SO de GSI debes instalar, haz lo siguiente:1 - Ejecuta el siguiente comando para corroborar si es compatible con Treble:
adb shell getprop ro.treble.enabled
Si la respuesta es false, el dispositivo no es compatible con GSI y no debes continuar con la instalación. Si es true, ve al próximo paso.También se puede comprobar con una APP la cual la podrás encontrar en Google Play haciendo una busqueda con la palabra Treble...
2 - Ejecuta el siguiente comando para verificar si es compatible con varias versiones:
adb shell cat /system/etc/ld.config.version_identifier.txt
| grep -A 20 "[vendor]"
Nota: Según la plataforma que uses, es posible que el archivo de configuración del comando anterior incluya un identificador de versión.En el resultado, busca namespace.default.isolated en la sección [vendor].
Si el valor de ese atributo es true, significa que el dispositivo es totalmente compatible con el kit de desarrollo nativo del proveedor (VNDK) y que puede usar cualquier versión del sistema operativo (SO) de GSI poserior a la versión del SO del dispositivo. Elige la más reciente.
Si el valor del atributo es false, significa que el dispositivo no cumple con todos los requisitos necesarios del VNDK y que solo puede usar la versión de GSI que coincida con la del SO del dispositivo. Por ejemplo, un dispositivo con Android 9 (API versión 28) que no cumple con los requisitos del VNDK solo puede cargar una imagen de GSI de Android 9.
3 - El tipo de arquitectura de CPU de GSI debe coincidir con la del dispositivo. Ejecuta el siguiente comando a fin de obtener la arquitectura de CPU correcta para la imagen de GSI:
adb shell getprop ro.product.cpu.abi
Utiliza el resultado para ver qué imagen de GSI debes instalar en el dispositivo. Por ejemplo, en un Pixel 3, el resultado indicaría que la arquitectura de CPU es arm64-v8a. Por lo tanto, deberías usar el tipo arm64.Configuración GSI y variaciones
El Android GSI actual tiene la siguiente configuración:
- Treble - Triplicar: El GSI incluye soporte completo para los cambios arquitectónicos basados en HIDL (también conocidos como agudos ) introducidos en Android 8.0, incluido el soporte para las interfaces HIDL. Puede usar el GSI en cualquier dispositivo Android que use interfaces de proveedor HIDL. (Para más detalles, vea Recursos de arquitectura ).
- Verifique el arranque: El GSI no incluye una solución de arranque de verificación (como vboot 1.0 o AVB). Para actualizar el GSI a un dispositivo que se inicie en Android 9 o anterior, el dispositivo debe tener un método para deshabilitar la verificación de arranque.
- Sistema de archivos: El GSI usa el sistema de archivos ext4.
- Diseño de partición: El GSI utiliza el diseño de partición del sistema como raíz.
vboot 1.0 - Arranque verificado: Verified Boot se esfuerza por garantizar que todo el código ejecutado provenga de una fuente confiable (generalmente OEM de dispositivos), en lugar de un atacante o corrupción. Establece una cadena de confianza completa, comenzando desde una raíz de confianza protegida por hardware hasta el cargador de arranque, la partición de arranque y otras particiones verificadas system, incluidas vendor, y opcionalmente, oem particiones. Durante el arranque del dispositivo, cada etapa verifica la integridad y autenticidad de la siguiente etapa antes de entregar la ejecución. Leer mas...
AVB - Arranque verificado por Android: Android 8.0 y superior incluye una implementación de referencia de Verified Boot llamada Android Verified Boot (AVB) o Verified Boot 2.0. AVB es una versión de Verified Boot que funciona con la arquitectura de Project Treble , que separa el marco de Android de la implementación subyacente del proveedor. Leer mas...
El GSI actual de Android incluye las siguientes variaciones principales:- Arquitectura de la CPU: Soporte para diferentes instrucciones de CPU (ARM, x86, etc.) y bitness de CPU (32 bit o 64 bit).
Cómo descargar imágenes de GSI
Los OEM no deben usar estas versiones de GSI para ejecutar y enviar pruebas de cumplimiento. Los OEM deben seguir consultando sus canales de comunicación existentes, como sus administradores técnicos de cuentas, para actividades relacionadas con pruebas de cumplimiento.
Se denomina fabricante de equipo original (en inglés: Original Equipment Manufacturer, siglas: OEM, literalmente «fabricante de equipamiento original») a la empresa que manufactura productos que luego son comprados por otra y vendidos al por menor bajo la marca de la empresa compradora (a veces conocida como empresa...
Hay algunas maneras de conseguir GSI según las necesidades de desarrollo:- Para imágenes de GSI de Android 10, descárgalas desde la página de la versión de GSI.
- Para el código fuente de GSI de Android 9, descárgalo desde AOSP y crea imágenes de GSI.
- Para imágenes de GSI previamente compiladas sin aplicaciones de GMS, descárgalas desde el sitio de AOSP de CI.
Cómo instalar imágenes de GSI
Nota: Si tu dispositivo adoptó el inicio verificado de Android (AVB), descarga y, luego, instala la siguiente imagen para inhabilitar el AVB antes de instalar una GSI: vbmeta.img.
La instalación de GSI depende del dispositivo. Consulta al fabricante del dispositivo para conocer las herramientas y los procedimientos exactos. Para Pixel 3 y dispositivos más nuevos, hay varias formas de instalación:- Para instalar manualmente imágenes de GSI, consulta Cómo instalar GSI - Requisitos para flashear GSI (Parte abajo).
- Con la actualización dinámica de sistema (DSU) para dispositivos que ya ejecutan Android 10, consulta el sitio de actualización dinámica del sistema.
Requisitos para flashear GSI
Los dispositivos Android pueden tener diferentes diseños, por lo que no hay un comando genérico o un conjunto de instrucciones para flashear un GSI para aplicar a todos los dispositivos. Consulte con el fabricante del dispositivo Android para obtener instrucciones explícitas de flasheo.
Utilice los siguientes pasos como guía general:
- Asegúrese de que el dispositivo tenga lo siguiente:
- Treblizado
- Un método para desbloquear dispositivos (para que puedan flashearse usando fastboot)
- Un método para deshabilitar el inicio de verificación (por ejemplo, vboot 1.0 o AVB )
- Un estado desbloqueado para que se pueda flashear a través de fastboot (para asegurarse de que tiene la última versión fastboot, compílelo desde el árbol de origen de Android).
- Deshabilitar verificar arranque.
- Borre la partición actual del sistema, luego actualice el GSI a la partición del sistema.
- Borre los datos del usuario y borre los datos de otras particiones necesarias (por ejemplo, datos del usuario y particiones del sistema).
- Reinicia el dispositivo.
- Arranque en modo fastboot y desbloquee el gestor de arranque. Los dispositivos compatibles fastbootd también deben iniciarse mediante fastbootd:
$ fastboot reboot fastboot
- Deshabilite el inicio de verificación (AVB) parpadeando vbmeta.img:
$ fastboot --disable-verification flash vbmeta vbmeta.img
- Borre y actualice el GSI a la partición del sistema:
$ fastboot erase system $ fastboot flash system system.img
- Borre los datos del usuario y borre los datos de otras particiones necesarias (por ejemplo, datos del usuario y particiones del sistema):
$ fastboot -w
- Reiniciar:
$ fastboot reboot
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition')
fastboot: error: Command failed
Use el siguiente comando para eliminar la partición del producto y liberar espacio para la partición del sistema. Esto proporciona espacio adicional para flashear el GSI:$ fastboot delete-logical-partition product_a
El postfix _a debe coincidir con el id de la ranura de la partición del sistema, como system_a en este ejemplo.
Comentarios