Übersicht über die Hardware-Abstraktionsschicht,Übersicht über die Hardware-Abstraktionsschicht,Übersicht über die Hardware-Abstraktionsschicht

In Android 8.0 und höher werden die untergeordneten Schichten neu geschrieben, um eine neue, modularere Architektur anzunehmen. Geräte mit Android 8.0 und höher müssen HALs unterstützen, die in HIDL geschrieben sind, mit einigen Ausnahmen, die unten aufgeführt sind. Diese HALs können gebunden oder durchgeleitet werden. In Android 11 werden auch in AIDL geschriebene HALs unterstützt. Alle AIDL HALs sind bindemittelhaltig.

  • Binderisierte HALs . HALs, ausgedrückt in HAL Interface Definition Language (HIDL) oder Android Interface Definition Language (AIDL). Diese HALs ersetzen sowohl herkömmliche als auch ältere HALs, die in früheren Versionen von Android verwendet wurden. In einer gebundenen HAL kommunizieren das Android-Framework und die HALs mithilfe von IPC-Aufrufen (Binder Inter Process Communication) miteinander. Alle Geräte, die mit Android 8.0 oder höher gestartet werden, müssen nur gebundene HALs unterstützen.

  • Durchgangs-HALs . Ein HIDL-verpackter konventioneller oder Legacy-HALs Diese HALs verpacken vorhandene HALs und können den HAL in binderisierten und im gleichen Prozessmodus (Passthrough) bedienen. Geräte, die auf Android 8.0 aktualisieren, können Passthrough-HALs verwenden.

Anforderungen für den HAL-Modus

Gerät Durchgang Binderisiert
Starten Sie mit Android 8.0 HALs, die in Passthrough-HALs aufgeführt sind, müssen Passthrough sein. Alle anderen HALs sind gebunden (einschließlich HALs, die Herstellererweiterungen sind).
Aktualisieren Sie auf Android 8.0 HALs, die in Passthrough-HALs aufgeführt sind, müssen Passthrough sein. HALs, die in gebundenen HALs aufgeführt sind, müssen gebunden werden.
Alle anderen vom Herstellerimage bereitgestellten HALs können sich im Passthrough- ODER Binderized-Modus befinden. In einem vollständig Treble-konformen Gerät müssen all diese binderisiert werden.

Binderisierte HALs

Android erfordert, dass die folgenden HALS auf allen Android-Geräten gebunden werden, unabhängig davon, ob es sich um Startgeräte oder Upgrade-Geräte handelt:

  • android.hardware.biometrics.fingerprint@2.1 . Ersetzt fingerprintd , der in Android 8.0 nicht mehr vorhanden ist.
  • android.hardware.configstore@1.0 . Neu in Android 8.0.
  • android.hardware.dumpstate@1.0 . Die ursprüngliche Schnittstelle, die von dieser HAL bereitgestellt wurde, konnte nicht geshimmt werden und wurde geändert. Aus diesem Grund muss dumpstate_board auf einem bestimmten Gerät neu implementiert werden (dies ist eine optionale HAL).
  • android.hardware.graphics.allocator@2.0 . Muss in Android 8.0 gebunden werden, damit Dateideskriptoren nicht zwischen vertrauenswürdigen und nicht vertrauenswürdigen Prozessen geteilt werden müssen.
  • android.hardware.radio@1.0 . Ersetzt die von rild bereitgestellte Schnittstelle, die in einem eigenen Prozess lebt.
  • android.hardware.usb@1.0 . Neu in Android 8.0.
  • android.hardware.wifi@1.0 . Neu in Android 8.0, ersetzt die ältere Wi-Fi-HAL-Bibliothek, die in system_server geladen wurde
  • android.hardware.wifi.supplicant@1.0 . Eine HIDL-Schnittstelle über den bestehenden wpa_supplicant Prozess.

Durchgangs-HALs

Android erfordert, dass sich die folgenden HALs auf allen Android-Geräten im Passthrough-Modus befinden, unabhängig davon, ob es sich um Startgeräte oder Upgrade-Geräte handelt:

  • android.hardware.graphics.mapper@1.0 . Ordnet die Erinnerung dem Prozess zu, in dem sie lebt.
  • android.hardware.renderscript@1.0 . Übergibt Elemente im selben Prozess (entspricht openGL ).

Alle oben nicht aufgeführten HALs müssen für Startgeräte gebunden werden.

HALs mit demselben Prozess

Same-Process HALs (SP-HALs) werden immer in demselben Prozess geöffnet, in dem sie verwendet werden. Sie umfassen alle HALs, die nicht in HIDL exprimiert werden, sowie einige, die nicht gebunden sind. Die Mitgliedschaft im SP-HAL-Set wird ohne Ausnahme nur von Google kontrolliert.

Zu den SP-HALs gehören:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (vom Android-System bereitgestellt, immer passthrough)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0