Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

HAL-Typen

In Android 8.0 und höher werden die Ebenen auf niedrigerer Ebene neu geschrieben, um eine neue, modularere Architektur zu übernehmen. Geräte mit Android 8.0 und höher müssen HALs unterstützen, die in HIDL geschrieben sind, mit einigen unten aufgeführten Ausnahmen. Diese HALs können binderisiert oder durchgelassen werden. In Android R werden auch in AIDL geschriebene HALs unterstützt. Alle AIDL HALs sind bindemittelt.

  • Binderisierte HALs. HALs, ausgedrückt in HAL-Schnittstellendefinitionssprache (HIDL) oder Android-Schnittstellendefinitionssprache (AIDL). Diese HALs ersetzen sowohl herkömmliche als auch ältere HALs, die in früheren Versionen von Android verwendet wurden. In einer Binderized HAL kommunizieren das Android-Framework und die HALs über IPC-Aufrufe (Binder Inter-Process Communication) miteinander. Alle Geräte, die mit Android 8.0 oder höher gestartet werden, dürfen nur binderisierte HALs unterstützen.
  • Passthrough-HALs. Eine HIDL-verpackte konventionelle oder Legacy-HAL . Diese HALs wickeln vorhandene HALs ein und können die HAL im bininderisierten Modus und im Passthrough-Modus (Same-Process) bedienen. Geräte, die auf Android 8.0 aktualisiert werden, können Passthrough-HALs verwenden.

Anforderungen an den HAL-Modus

Gerät Passthrough Binderisiert
Starten Sie mit Android 8.0 In Passthrough aufgeführte HALs HALs müssen Passthrough sein. Alle anderen HALs sind binderisiert (einschließlich HALs, bei denen es sich um Herstellererweiterungen handelt).
Upgrade auf Android 8.0 In Passthrough aufgeführte HALs HALs müssen Passthrough sein. In Binderized HALs aufgeführte HALs müssen binderized sein.
Alle anderen vom Hersteller-Image bereitgestellten HALs können sich im Passthrough- ODER Binder-Modus befinden. In einem vollständig dreifach kompatiblen Gerät müssen alle diese Elemente binderisiert werden.

Binderisierte HALs

Für Android müssen die folgenden HALS auf allen Android-Geräten binderisiert sein, unabhängig davon, ob es sich um Startgeräte oder Upgrade-Geräte handelt:

  • android.hardware.biometrics.fingerprint@2.1 . Ersetzt fingerprintd der nicht mehr in Android 8.0 enthalten ist.
  • android.hardware.configstore@1.0 . Neu in Android 8.0.
  • android.hardware.dumpstate@1.0 . Die von dieser HAL bereitgestellte ursprüngliche Schnittstelle konnte nicht angepasst werden und wurde geändert. Aus diesem dumpstate_board muss dumpstate_board auf einem bestimmten Gerät erneut implementiert werden (dies ist eine optionale HAL).
  • android.hardware.graphics.allocator@2.0 . Muss in Android 8.0 binderisiert sein, 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 rild 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 vorhandenen Prozess wpa_supplicant .

HINWEIS : Android bietet die folgenden HIDL-Schnittstellen, die sich immer im Binder-Modus befinden: android.frameworks.* , android.system.* Und android.hidl.* (Mit Ausnahme von android.hidl.memory@1.0 wie unten beschrieben).

Passthrough-HALs

Für Android müssen 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 das Gedächtnis dem Prozess zu, in dem es 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 binderisiert sein.

HALs mit gleichem Prozess

HALs mit gleichem Prozess (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 bindend sind. Die Mitgliedschaft im SP-HAL-Set wird ausnahmslos nur von Google kontrolliert.

SP-HALs umfassen Folgendes:

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

Konventionelle & Legacy-HALs

Herkömmliche HALs (in Android 8.0 veraltet) sind Schnittstellen, die einer bestimmten benannten und versionierten Anwendungsbinärschnittstelle (ABI) entsprechen. Der Großteil der Android-Systemschnittstellen ( Kamera , Audio , Sensoren usw.) besteht aus herkömmlichen HALs, die unter Hardware / libhardware / include / hardware definiert sind .

Legacy-HALs (ebenfalls in Android 8.0 veraltet) sind Schnittstellen, die älter sind als herkömmliche HALs. Einige wichtige Subsysteme (Wi-Fi, Radio Interface Layer und Bluetooth) sind ältere HALs. Während es keine einheitliche oder standardisierte Art gibt, eine Legacy-HAL zu beschreiben, ist alles, was vor Android 8.0 keine konventionelle HAL ist, eine Legacy-HAL. Teile einiger älterer HALs sind in libhardware_legacy enthalten , während andere Teile in der gesamten Codebasis verteilt sind.