Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Tipos de HAL

En Android 8.0 y versiones posteriores, las capas de nivel inferior se reescribieron para adoptar una nueva arquitectura más modular. Los dispositivos que ejecutan Android 8.0 y superior 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, las HAL escritas en AIDL también son compatibles. Todas las AIDL HAL están ligadas.

  • HAL aglutinantes. 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 que se usaban en versiones anteriores de Android. En una HAL enlazada, el marco de Android y las HAL se comunican entre sí mediante llamadas de comunicación entre procesos (IPC) de enlazador. Todos los dispositivos que se inician con Android 8.0 o posterior deben admitir solo HAL vinculados.
  • Passthrough HAL. A HIDL-envuelta convencional o HAL legado . Estos HAL envuelven los HAL existentes y pueden servir al HAL en los modos enlazado y del mismo proceso (paso a través). Los dispositivos que se actualizan a Android 8.0 pueden utilizar HAL de paso.

Requisitos del modo HAL

Dispositivo Pasar por Encuadernado
Lanzamiento con Android 8.0 HAL enumerados en HAL de paso a través deben ser de paso a través. Todas las demás HAL están vinculadas (incluidas las HAL que son extensiones de proveedor).
Actualice a Android 8.0 HAL enumerados en HAL de paso a través deben ser de paso a través. HAL enumerados en HAL revestidas con un aglutinante deben estar revestidas con un aglutinante.
Todas las demás HAL proporcionadas 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 aglutinantes

Android requiere que los siguientes HALS estén vinculados 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 es ya no está 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 ajustar y se modificó. Debido a esto, dumpstate_board se debe volver a implementar en un dispositivo dado (esto es una HAL opcional).
  • android.hardware.graphics.allocator@2.0 . Se requiere estar 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 . Sustituye la interfaz proporcionada por rild la 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, sustituye a la biblioteca de conexión Wi-Fi HAL legado que se cargó en system_server .
  • android.hardware.wifi.supplicant@1.0 . Una interfaz HIDL sobre el existente wpa_supplicant proceso.

NOTA: Android proporciona las siguientes interfaces HIDL que siempre estará en modo revestidas con un aglutinante: android.frameworks.* , android.system.* , Y android.hidl.* (Excepto para android.hidl.memory@1.0 como se describe a continuación).

Passthrough HAL

Android requiere que las siguientes HAL estén en modo de acceso directo en todos los dispositivos Android, independientemente de si son dispositivos de inicio 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 artículos en el mismo proceso (equivalente a openGL ).

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

HAL del mismo proceso

Las HAL del mismo proceso (SP-HAL) siempre se abren en el mismo proceso en el que se utilizan. Se incluyen todas HAL no expresadas en HIDL, así como algunos que no están revestidas con un aglutinante. La membresía en el conjunto SP-HAL está controlada solo 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 a través)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL convencionales y heredados

Las HAL convencionales (en desuso en Android 8.0) son interfaces que se ajustan a una interfaz binaria de aplicación (ABI) específica con nombre y versión. La mayor parte de las interfaces del sistema Android ( cámara , audio , sensores , etc.) son en forma de HAL convencionales, que se definen debajo de hardware / libhardware / include / hardware .

Las HAL heredadas (también obsoletas en Android 8.0) son interfaces anteriores a las HAL convencionales. Algunos subsistemas importantes (Wi-Fi, capa de interfaz de radio y Bluetooth) son HAL heredados. Si bien no existe una forma uniforme o estandarizada de describir una HAL heredada, cualquier cosa anterior a Android 8.0 que no sea una HAL convencional es una HAL heredada. Partes de algunos HAL heredados están contenidas en libhardware_legacy , mientras que otras partes están intercaladas en el código base.