Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Tipos de HAL

En Android 8.0 y superior, las capas de nivel inferior se reescriben para adoptar una nueva arquitectura más modular. Los dispositivos con Android 8.0 y versiones posteriores deben admitir HAL escritos en HIDL, con algunas excepciones enumeradas a continuación. Estos HAL se pueden aglutinar o atravesar. En Android R, los HAL escritos en AIDL también son compatibles. Todas las AIDL HAL están ligadas.

  • HAL Binderized. HAL expresados ​​en lenguaje de definición de interfaz HAL (HIDL) o lenguaje de definición de interfaz Android (AIDL). Estas HAL reemplazan las HAL convencionales y heredadas utilizadas en versiones anteriores de Android. En una HAL Binderizada, el marco de Android y las HAL se comunican entre sí mediante llamadas de comunicación entre procesos (IPC). Todos los dispositivos que se inicien con Android 8.0 o posterior deben ser compatibles únicamente con HAL vinculados.
  • Pasar a través de HAL. Un HAL convencional o heredado envuelto en HIDL. Estas HAL envuelven las HAL existentes y pueden servir a la HAL en modos binderizados y del mismo proceso (passthrough). Los dispositivos que actualizan a Android 8.0 pueden usar HAL de paso a través.

Requisitos del modo HAL

Dispositivo Pasar por Aglutinado
Lanzamiento con Android 8.0 Los HAL enumerados en Passthrough HAL deben ser passthrough. Todos los demás HAL están vinculados (incluidos los HAL que son extensiones de proveedor).
Actualiza a Android 8.0 Los HAL enumerados en Passthrough HAL deben ser passthrough. Los HAL enumerados en Binderized HAL deben ser binderized.
Todos los demás HAL proporcionados por la imagen del proveedor pueden estar en modo de transferencia O en modo binderized. En un dispositivo totalmente compatible con Treble, todos estos deben estar vinculados.

HAL Binderized

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 la 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 modificar y se modificó. 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 archivo 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 heredada de Wi-Fi HAL que se cargó en system_server .
  • android.hardware.wifi.supplicant@1.0 . Una interfaz HIDL sobre el proceso existente wpa_supplicant .

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

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 . Mapea la memoria en el proceso en el que vive.
  • android.hardware.renderscript@1.0 . Pasa elementos en el mismo proceso (equivalente a openGL ).

Todos los HAL no enumerados anteriormente deben estar vinculados para 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 passthrough)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL convencionales y heredados

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

Las HAL heredadas (también en desuso en Android 8.0) son interfaces anteriores a las HAL convencionales. Algunos subsistemas importantes (Wi-Fi, Radio Interface Layer 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 contenidos en libhardware_legacy , mientras que otras partes están intercaladas en toda la base de código.