Google ha revelado Dynamic System Update, una nueva forma de instalar un GSI en Android Q que no requiere desbloquear el gestor de arranque.
Junto con el lanzamiento de Android 8.0 Oreo, Google presentó Proyecto agudos: una importante reestructuración en la forma en que se comunican el marco del sistema operativo Android y los HAL del proveedor y el kernel de Linux. Treble es una importante iniciativa diseñada para reducir la versión de la plataforma Android y fragmentación del parche de seguridady todos los dispositivos con marca Android que se inicien con Android Pie deben ser compatibles con Project Treble. Los fabricantes de equipos originales y los proveedores prueban la compatibilidad con Treble iniciando una imagen genérica del sistema (GSI), una versión pura de Android de AOSP, y pasando la prueba. Conjunto de pruebas de proveedores (VTS) e imagen de sistema genérico del conjunto de pruebas de compatibilidad (CTS-on-GSI). El GSI ha demostrado ser útil no sólo porque permite a los ingenieros de software que trabajan para los fabricantes de equipos originales probar la compatibilidad con Treble, sino que también ha abierto la puerta a una
gran comunidad de ROM personalizada en XDA. Para el lanzamiento de Android Q, Google quiere que los GSI sean útiles para otro grupo: los desarrolladores de aplicaciones.Dado que la primera versión estable y la caída del código fuente de cualquier versión de plataforma Android generalmente en agosto, los desarrolladores que quieran probar la próxima versión de Android en un dispositivo real normalmente necesitan acceso a un teléfono inteligente de Google si no quieren esperar a que la actualización llegue a su propio hardware. Sin embargo, Google trabajó con los fabricantes de equipos originales para ofrecer una Android P beta a varios dispositivos el año pasado, y han seguido eso este año con un Android Q beta. Además de una versión beta oficial de Android Q, Google este año también lanzó una Q beta oficial GSI por lo que cualquier desarrollador con un dispositivo compatible con Project Treble puede instalar la última versión de Q sin tener que esperar meses para que la compilación llegue a sus dispositivos. Esta nueva forma de probar la próxima versión de Android brinda a los desarrolladores más oportunidades y, por lo tanto, más tiempo para probar sus aplicaciones. cambios importantes en Android.
Desafortunadamente, el método actual de instalando un GSI puede ser difícil. Requiere desbloquear el gestor de arranque, lo que significa borrar todos los datos del usuario y/o anular la garantía, y mostrar una imagen a través del protocolo fastboot. No es un proceso rápido y sencillo para un desarrollador de aplicaciones, si su dispositivo Incluso permite desbloquear el gestor de arranque.. Por eso, para el últimos meses, Google ha trabajado en una nueva forma de iniciar GSI. Ingrese una nueva función llamada Actualización dinámica del sistema o DSU.
(Esta función se desarrolló anteriormente con los nombres "Live Image", "Dynamic Android" y "Android on Tap", así que no se sorprenda si Google la llama de otra manera en unas pocas semanas o meses).
Actualizaciones dinámicas del sistema en Android Q
El objetivo de la función DSU es permitir que un desarrollador inicie un GSI sin interferir con la instalación actual. Eso significa que no es necesario desbloquear el gestor de arranque y no es necesario borrar los datos del usuario. El proceso de instalación también se simplifica enormemente ya que Google ha proporcionado una interfaz de línea de comandos a través de ADB y una aplicación que se puede controlar mediante intents. Así es como se ve arrancar un GSI usando DSU:
En este video*, un Google Pixel 3 XL con Android Q beta 3 se reinicia en un GSI. En este entorno, un desarrollador de aplicaciones puede instalar y probar la compatibilidad de su aplicación con Q API. Cuando terminen las pruebas, simplemente pueden reiniciar nuevamente en el software Q beta 3 normal en el dispositivo. ¡Básicamente estás iniciando dualmente un GSI para que puedas probar tu aplicación de manera segura!
*Grabamos este video en Google I/O 2019 cuando DSU aún no estaba disponible públicamente, por lo que Google modificó ligeramente la versión Q beta 3 en el Pixel 3 XL filmado para incluir compatibilidad con DSU. Los dispositivos que ejecutan Q beta 4 y posteriores son elegibles para admitir DSU si cumplen con los requisitos a continuación.
Requisitos para actualizaciones dinámicas del sistema
Poner en funcionamiento lo que es esencialmente arranque dual no fue una tarea fácil para Google. Se tuvieron que realizar cambios importantes en la forma en que se administran las particiones en el Pixel 3, el banco de pruebas de Google para DSU. Por lo tanto, el primer requisito importante para la compatibilidad con DSU es que el dispositivo admita particiones dinámicas. Las particiones dinámicas implican una partición real de almacenamiento que se divide en particiones lógicas de tamaño variable como sistema, proveedor, odm, oem, producto, etc. Durante la instalación de un GSI, se reserva espacio para nuevas particiones de datos de usuario y del sistema tomando bloques no utilizados de la partición de datos de usuario existente. Dado que estas nuevas particiones pueden tener un tamaño de varios gigabytes, el soporte de DSU sólo tiene sentido con particiones, de lo contrario, un dispositivo necesitaría reservar permanentemente varios gigabytes de espacio de almacenamiento para GSI instalaciones.
Otros requisitos incluyen un disco ram, que decide si arrancar en recuperación, sistema o partición lógica, y una partición de metadatos para almacenar los metadatos del GSI. En general, los componentes básicos para la compatibilidad con DSU son los requisitos de lanzamiento de Android Q., según el líder de Project Treble, Iliyan Malchev. No estamos seguros si todo Lo que se necesita para admitir DSU es un requisito de lanzamiento de Android Q, pero podemos suponer que la mayoría, si no todos, los dispositivos que se inician con Android Q. poder admiten DSU incluso si Google no lo exige actualmente. Hasta ahora, solo Pixel 3, Pixel 3 XL, Pixel 3a y Pixel 3a XL tienen particiones dinámicas y, de estos dispositivos, solo Pixel 3 y Pixel 3 XL admiten DSU en Android Q beta 4. Aunque no se requiere compatibilidad con DSU, Google espera que los OEM habiliten la función de todos modos porque simplifica las pruebas seguras de compatibilidad con Treble. Por ejemplo, un ingeniero de software OEM puede poner un GSI en una tarjeta SD para que puedan iniciar rápidamente en varios dispositivos y probar la compatibilidad con Treble.
Seguridad para actualizaciones dinámicas del sistema
Dado que DSU introduce esencialmente un segundo sistema operativo en la mezcla, Google necesita asegurarse de que esta nueva instalación no pueda ser manipulada para romper la integridad del dispositivo. Por lo tanto, la Las mismas protecciones de seguridad básicas para la instalación original están implementadas para la instalación GSI.: Políticas de arranque verificado de Android y SELinux. Además, sólo las aplicaciones con el permiso privilegiado|firma INSTALL_DYNAMIC_SYSTEM pueden iniciar un GSI instalación, mientras que las aplicaciones con el permiso de firma MANAGE_DYNAMIC_SYSTEM pueden habilitar/deshabilitar o borrar un GSI instalación. Esto significa que solo las aplicaciones confiables a nivel de sistema pueden funcionar con DSU.
Para garantizar que los datos del usuario original estén protegidos, Google ha agregado una mecanismo de protección adicional en Android Q. Llamado "Control," la función protege contra la destrucción de datos del usuario restaurando las particiones controladas a su estado original. Sin embargo, los puntos de control no solo son útiles para DSU. También se utilizan para proteger contra errores Línea principal del proyecto módulo APEX y A/B Actualizaciones OTA. (Dispositivos con particiones A/B ya tienen protección de reversión, pero esas reversiones requieren restablecimientos de datos de fábrica, mientras que los puntos de control de datos del usuario no).
Instalación de un GSI
Si su dispositivo admite DSU como la serie Pixel 3, entonces es fácil instalar un GSI. Primero debe asegurarse de que el indicador de función del sistema dinámico esté habilitado de una de dos maneras:
- Si está en una compilación de depuración de usuario, habilite el indicador settings_dynamic_android en Configuración > Sistema > Opciones de desarrollador > Indicadores de funciones.
- Si está en una compilación de usuario, ejecute el siguiente comando de adb shell:
setproppersist.sys.fflag.override.settings_dynamic_system 1
Luego, descargue la última versión GSI de Android Q beta desde Google o el OEM de su dispositivo. (DSU solo permite instalar GSI firmados por Google o un OEM). Una vez descargado, use simg2img para convertir la imagen dispersa en una imagen sin formato. Utilice gzip para empaquetar la imagen sin procesar y luego copie el archivo resultante en una ubicación en su dispositivo. almacenamiento externo (por ejemplo, /data/media/0/Download) o un medio de almacenamiento externo real (como una tarjeta SD física tarjeta). Por último, inicie la aplicación DynamicSystemInstallationService con la intención correcta para comenzar la instalación:
adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592
Una vez que haga clic en reiniciar, iniciará GSI. La usabilidad del dispositivo en GSI depende de qué tan bien el OEM de su dispositivo implementó Treble (o más bien, qué tan poco violaron Treble compatibilidad). Algunos dispositivos funcionarán mejor con GSI que otros, pero en general, no espere utilizar esta instalación como instalación diaria. conductor. Debes probar tu aplicación y luego salir reiniciando. Si desea permanecer en la instalación de GSI para realizar más pruebas, puede utilizar el herramienta_gsi comando de shell.
Puede encontrar las instrucciones completas de instalación de GSI para DSU aquí. Los errores se pueden archivar en el rastreador de problemas de Google,Reddit, o Desbordamiento de pila.
El motivo detrás de las actualizaciones dinámicas del sistema
Cuando hablé con Iliyan Malchev en Google I/O, reiteró lo que dijo Hung-ying Tyan del equipo de Treble sobre el acceso temprano a GSI en Cumbre de desarrolladores de Android de noviembre. Google hizo DSU para Solicitar comentarios de una audiencia lo más amplia posible.. El objetivo es mejorar la calidad del GSI, lo que a su vez mejora la calidad de la futura versión de Android ya que un GSI es la forma más pura de Android. Google es actualmente la única empresa que prueba la compatibilidad GSI de la próxima versión (por ejemplo, qué tan bien funciona la imagen del sistema Android Q sobre Android P). implementación del proveedor), pero a medida que más personas actualizan los GSI y brindan comentarios, los OEM pueden corregir las violaciones de compatibilidad de Treble para que los GSI funcionen aún mejor en el futuro. futuro. Iliyan dice que hay un gran interés por parte de los OEM y proveedores como Qualcomm en reutilizar imágenes de proveedores de la versión anterior de Android con la imagen del sistema de la próxima versión. Iniciativas como DSU ayudan a Google y a los OEM a cerrar la brecha en la cobertura de pruebas automatizadas como VTS y CTS-on-GSI. Por lo tanto, Google consigue que más probadores beta brinden comentarios sobre la próxima versión de Android, al mismo tiempo que escuchan sobre violaciones de compatibilidad de Treble para que los OEM puedan mejorar su trabajo.
La incorporación de actualizaciones dinámicas del sistema en Android Q es bienvenida, pero no será la solución de arranque dual que algunos de ustedes esperan. Como se mencionó anteriormente, solo se pueden instalar imágenes del sistema firmadas por Google u OEM. Cuando le pregunté a Iliyan sobre la posibilidad de extender DSU para soportar un ecosistema de Android alternativo sistemas, dijo que es técnicamente posible hacerlo ya que DSU es simplemente un canal para entregar el sistema imágenes. Cualquier OEM puede usarlo como quiera siempre y cuando el resultado final sea compatible con Android. Google no ha creado una alternativa al sistema OTA aquí, y DSU no está diseñado para usarse para un arranque dual real. De todos modos, el trabajo que Google ha realizado en Treble está haciendo que Android sea más modular, por lo que no me sorprendería que el arranque dual nativo se convierta en realidad en el futuro.