Descripción general de la capa de abstracción de hardware

En Android 8.0 y versiones posteriores, las capas de nivel inferior se reescriben para adoptar una arquitectura nueva y más modular. Los dispositivos que ejecutan Android 8.0 y versiones posteriores deben admitir HAL escritos en HIDL, con algunas excepciones que se enumeran a continuación. Estos HAL se pueden aglutinar o pasar. En Android 11, también se admiten HAL escritos en AIDL. Todos los AIDL HAL están encuadernados.

  • HAL aglutinados . HAL expresados ​​en lenguaje de definición de interfaz HAL (HIDL) o lenguaje de definición de interfaz de Android (AIDL). Estos HAL reemplazan a los HAL convencionales y heredados utilizados en versiones anteriores de Android. En un HAL enlazado, el marco de Android y los HAL se comunican entre sí mediante llamadas de comunicación entre procesos (IPC) de Binder. Todos los dispositivos que se inician con Android 8.0 o posterior deben admitir HAL enlazados únicamente.

  • HAL de paso . HAL convencionales o heredados envueltos en HIDL. Estos HAL envuelven HAL existentes y pueden servir el HAL en modos enlazados y del mismo proceso (paso a través). Los dispositivos que se actualizan a Android 8.0 pueden usar HAL de paso.

Requisitos del modo HAL

Dispositivo Pasar por Encuadernado
Lanzar con Android 8.0 Los HAL enumerados en HAL de paso deben ser de paso. Todos los demás HAL están enlazados (incluidos los HAL que son extensiones de proveedores).
Actualízate a Android 8.0 Los HAL enumerados en HAL de paso deben ser de paso. Los HAL enumerados en HAL encuadernados deben estar encuadernados.
Todos los demás HAL proporcionados por la imagen del proveedor pueden estar en modo de transferencia O enlazado. En un dispositivo totalmente compatible con Treble, todos estos deben estar encuadernados.

HAL aglutinados

Android requiere que los siguientes HAL estén enlazados en todos los dispositivos Android, independientemente de si son dispositivos de lanzamiento o dispositivos de actualización:

  • android.hardware.biometrics.fingerprint@2.1 . Reemplaza fingerprintd que ya no están en Android 8.0.
  • android.hardware.configstore@1.0 . Nuevo en Android 8.0.
  • android.hardware.dumpstate@1.0 . La interfaz original proporcionada por este HAL no se pudo corregir y se cambió. Debido a esto, dumpstate_board debe volver a implementarse en un dispositivo determinado (este es un HAL opcional).
  • android.hardware.graphics.allocator@2.0 . Se requiere que esté enlazado en Android 8.0 para que los descriptores de archivos no tengan que compartirse entre procesos confiables y no confiables.
  • android.hardware.radio@1.0 . Reemplaza la interfaz proporcionada por rild que vive en su propio proceso.
  • android.hardware.usb@1.0 . Nuevo en Android 8.0.
  • android.hardware.wifi@1.0 . Nuevo en Android 8.0, reemplaza la biblioteca Wi-Fi HAL heredada que se cargó en system_server
  • android.hardware.wifi.supplicant@1.0 . Una interfaz HIDL sobre el proceso wpa_supplicant existente.

HAL de paso

Android requiere que los siguientes HAL estén en modo de transferencia en todos los dispositivos Android, independientemente de si son dispositivos de lanzamiento o dispositivos de actualización:

  • android.hardware.graphics.mapper@1.0 . Asigna la memoria al proceso en el que vive.
  • android.hardware.renderscript@1.0 . Pasa elementos en el mismo proceso (equivalente a openGL ).

Todos los HAL que no figuran en la lista anterior deben vincularse para los dispositivos de lanzamiento.

HAL del mismo proceso

Los HAL del mismo proceso (SP-HAL) siempre se abren en el mismo proceso en el que se utilizan. Incluyen todos los HAL no expresados ​​en HIDL, así como algunos que no están enlazados. La membresía en el conjunto SP-HAL está controlada únicamente por Google, sin excepciones.

Los SP-HAL incluyen lo siguiente:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (proporcionado por el sistema Android, siempre de paso)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0