Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

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 con 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 tradicionales 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. Un HAL convencional o heredado envuelto en HIDL. Estos HAL envuelven los HAL existentes y pueden servir el HAL en los modos aglutinado 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 Las HAL enumeradas en Passthrough Las HAL deben ser de transferencia. Todos los demás HAL están vinculados (incluidos los HAL que son extensiones de proveedor).
Actualice a Android 8.0 Las HAL enumeradas en Passthrough Las HAL deben ser de transferencia. Los HAL enumerados en HAL enlazados deben estar enlazados.
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 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 cambió. Debido a esto, dumpstate_board debe volver a implementarse en un dispositivo determinado (esta 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 . 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 HAL de Wi-Fi heredada que se cargó en system_server .
  • android.hardware.wifi.supplicant@1.0 . Una interfaz HIDL sobre el proceso wpa_supplicant existente.

NOTA : Android proporciona las siguientes interfaces HIDL que siempre estarán en modo enlazado: 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 elementos 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. Incluyen todas las HAL no expresadas en HIDL, así como algunas que no están ligadas. 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 pasa 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.) tienen la forma de HAL convencionales, que se definen en 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 a lo largo del código base.