Cuando desarrollan y lanzan dispositivos nuevos, los proveedores pueden definir y declarar la versión de FCM objetivo en el manifiesto del dispositivo (DM). Cuando actualizan la imagen del proveedor para dispositivos antiguos, los proveedores pueden optar por implementar nuevas versiones de HAL y aumentar la versión de FCM de destino.
Desarrollar dispositivos nuevos
Cuando definas la versión de FCM del dispositivo objetivo para dispositivos nuevos, ten en cuenta lo siguiente:
- Deja
DEVICE_MANIFEST_FILEyPRODUCT_ENFORCE_VINTF_MANIFESTsin definir. - Implementa HALs para la versión de FCM objetivo.
- Escribe el archivo de manifiesto del dispositivo correcto.
- Escribe la versión de FCM de destino en el archivo de manifiesto del dispositivo.
- Establece
DEVICE_MANIFEST_FILE. - Establece
PRODUCT_ENFORCE_VINTF_MANIFESTentrue.
Lanzar dispositivos nuevos
Cuando se lanza un dispositivo nuevo, se debe determinar su versión inicial de FCM de destino y declararla en el manifiesto del dispositivo como el atributo "target-level" en el elemento <manifest> de nivel superior.
Por ejemplo, los dispositivos que se lancen con Android 9 deben tener la versión de FCM objetivo igual a 3 (la versión más reciente disponible en este momento). Para declarar esto en el manifiesto del dispositivo, haz lo siguiente:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Actualiza la imagen del proveedor
Cuando actualizan la imagen del proveedor para un dispositivo antiguo, los proveedores pueden optar por implementar nuevas versiones de HAL y aumentar la versión de FCM de destino.
Actualiza los HALs
Durante una actualización de la imagen del proveedor, los proveedores pueden implementar nuevas versiones de HAL, siempre que el nombre de HAL, el nombre de la interfaz y el nombre de la instancia sean los mismos. Por ejemplo:
- Los dispositivos Google Pixel 2 y Pixel 2 XL se lanzaron con la versión 2 de FCM de destino, que implementó el HAL de audio 2.0 requerido
android.hardware.audio@2.0::IDeviceFactory/default. - En el caso del HAL de audio 4.0 que se lanzó con Android 9, los dispositivos Google Pixel 2 y Pixel 2 XL pueden usar una OTA completa para actualizarse al HAL 4.0, que implementa
android.hardware.audio@4.0::IDeviceFactory/default. - Si bien
compatibility_matrix.2.xmlespecifica solo audio 2.0, se relajó el requisito en una imagen del proveedor con la versión 2 de FCM como objetivo, ya que el framework de Android 9 (versión 3 de FCM) considera que el audio 4.0 reemplaza el HAL de audio 2.0 en términos de funcionalidad.
En resumen, dado que compatibility_matrix.2.xml requiere audio 2.0 y compatibility_matrix.3.xml requiere audio 4.0, los requisitos son los siguientes:
| Versión de FCM (sistema) | Versión de FCM objetivo (proveedor) | Requisitos |
|---|---|---|
| 2 (8.1) | 2 (8.1) | Audio 2.0 |
| 3 (9) | 2 (8.1) | Audio 2.0 o 4.0 |
| 3 (9) | 3 (9) | Audio 4.0 |
Actualiza la versión de FCM objetivo
Durante una actualización de la imagen del proveedor, los proveedores también pueden incrementar la versión de FCM de destino para especificar la versión de FCM de destino con la que puede funcionar la imagen del proveedor actualizada. Para aumentar la versión de FCM objetivo de un dispositivo, los proveedores deben hacer lo siguiente:
- Implementa todas las versiones de HAL obligatorias nuevas para la versión de FCM objetivo.
- Modifica las versiones de HAL en el archivo de manifiesto del dispositivo.
- Modifica la versión de FCM de destino en el archivo de manifiesto del dispositivo.
- Se quitaron las versiones de HAL obsoletas.
Por ejemplo, los dispositivos Google Pixel y Pixel XL se lanzaron con Android 7.0, por lo que su versión de FCM de destino debe ser, al menos, heredada. Sin embargo, el manifiesto del dispositivo declara la versión 2 de FCM como objetivo porque la imagen del proveedor se actualizó para cumplir con compatibility_matrix.2.xml:
<manifest version="1.0" type="device" target-level="2">
Si los proveedores no implementan todas las versiones nuevas requeridas de la HAL o no quitan las versiones de la HAL que dejaron de estar disponibles, no se podrá actualizar la versión de destino del FCM.
Por ejemplo, los dispositivos Google Pixel 2 y Pixel 2 XL tienen como destino la versión 2 de FCM.
Si bien implementan algunas HAL requeridas por compatibility_matrix.3.xml (como audio 4.0, salud 2.0, etcétera), no quitan android.hardware.radio.deprecated@1.0, que está en desuso en la versión 3 de FCM (Android 9). Por lo tanto, estos dispositivos no pueden actualizar la versión de FCM de destino a la versión 3.
Exigir requisitos del kernel durante la OTA
Actualización de dispositivos con Android 9 o versiones anteriores
En dispositivos con Android 9 o versiones anteriores, asegúrate de que se hayan aplicado los siguientes CLs:
Estos cambios introducen la marca de compilación PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS y dejan la marca sin configurar para los dispositivos lanzados con Android 9 o versiones anteriores.
- Cuando se actualizan a Android 10, los clientes de OTA en dispositivos con Android 9 o versiones anteriores no verifican correctamente los requisitos del kernel en el paquete de OTA. Estos cambios son necesarios para quitar los requisitos del kernel del paquete de OTA generado.
-
Cuando actualices a Android 11, es opcional establecer la marca de compilación
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSpara verificar la compatibilidad con VINTF cuando se genere el paquete de actualización.
Para obtener más información sobre esta marca de compilación, consulta Cómo actualizar dispositivos desde Android 10.
Actualización de dispositivos desde Android 10
Android 10 introduce una nueva marca de compilación, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS. En el caso de los dispositivos
lanzados con Android 10, este parámetro se
establece automáticamente en true. Cuando la marca se establece en true, una secuencia de comandos extrae la versión y las configuraciones del kernel de la imagen del kernel instalada.
- Cuando se actualiza a Android 10, el paquete de actualización OTA contiene la versión y la configuración del kernel. Los clientes de OTA en dispositivos que ejecutan Android 10 leen esta información para verificar la compatibilidad.
- Cuando se actualiza a Android 11, la generación de paquetes OTA lee la versión y la configuración del kernel para verificar la compatibilidad.
Si la secuencia de comandos no puede extraer esta información de la imagen del kernel, realiza una de las siguientes acciones:
- Edita el script para que admita tu formato de kernel y contribuye al AOSP.
- Establece
BOARD_KERNEL_VERSIONen la versión del kernel yBOARD_KERNEL_CONFIG_FILEen la ruta de acceso del archivo de configuración del kernel compilado.config. Ambas variables se deben actualizar cuando se actualiza la imagen del kernel. - También puedes establecer
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSenfalsepara omitir la verificación de los requisitos del kernel. Esto no se recomienda porque cualquier incompatibilidad se oculta y solo se descubre cuando se ejecutan las pruebas de VTS después de la actualización.
Puedes ver el código fuente de la secuencia de comandos de extracción de información del kernel extract_kernel.py.