Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Tipi HAL

In Android 8.0 e versioni successive, i livelli di livello inferiore vengono riscritti per adottare una nuova architettura più modulare. I dispositivi con Android 8.0 e versioni successive devono supportare gli HAL scritti in HIDL, con alcune eccezioni elencate di seguito. Questi HAL possono essere binderized o passthrough. In Android 11 sono supportati anche gli HAL scritti in AIDL. Tutti gli HAL dell'AIDL sono binderizzati.

  • HAL binderized. HAL espressi in HAL Interface Definition Language (HIDL) o Android Interface Definition Language (AIDL). Questi HAL sostituiscono sia gli HAL convenzionali che quelli legacy utilizzati nelle versioni precedenti di Android. In un HAL binderizzato, il framework Android e gli HAL comunicano tra loro utilizzando chiamate IPC (Inter-Process Communication) di binder. Tutti i dispositivi che si avviano con Android 8.0 o versioni successive devono supportare solo HAL binderizzati.
  • HAL passthrough. Un HAL convenzionale o legacy avvolto in HIDL. Questi HAL avvolgono gli HAL esistenti e possono servire l'HAL in modalità binderized e same-process (passthrough). I dispositivi che eseguono l'aggiornamento ad Android 8.0 possono utilizzare HAL passthrough.

Requisiti della modalità HAL

Dispositivo Passthrough Binderized
Avvia con Android 8.0 Gli HAL elencati in Passthrough Gli HAL devono essere passthrough. Tutti gli altri HAL sono binder (inclusi gli HAL che sono estensioni del fornitore).
Aggiorna ad Android 8.0 Gli HAL elencati in Passthrough Gli HAL devono essere passthrough. Gli HAL elencati negli HAL binderizzati devono essere binderizzati.
Tutti gli altri HAL forniti dall'immagine del fornitore possono essere in modalità passthrough O binderized. In un dispositivo completamente compatibile con Treble, tutti questi devono essere binderizzati.

HAL binderized

Android richiede che i seguenti HALS siano binderized su tutti i dispositivi Android indipendentemente dal fatto che siano dispositivi di avvio o dispositivi di aggiornamento:

  • android.hardware.biometrics.fingerprint@2.1 . Sostituisce fingerprintd che non è più in Android 8.0.
  • android.hardware.configstore@1.0 . Novità in Android 8.0.
  • android.hardware.dumpstate@1.0 . L'interfaccia originale fornita da questo HAL non può essere modificata ed è stata modificata. Per questo dumpstate_board , dumpstate_board deve essere reimplementato su un dato dispositivo (questo è un HAL opzionale).
  • android.hardware.graphics.allocator@2.0 . Necessario per essere binderized in Android 8.0 in modo che i descrittori di file non debbano essere condivisi tra processi affidabili e non affidabili.
  • android.hardware.radio@1.0 . Sostituisce l'interfaccia fornita da rild che vive nel proprio processo.
  • android.hardware.usb@1.0 . Novità in Android 8.0.
  • android.hardware.wifi@1.0 . Nuovo in Android 8.0, sostituisce la libreria HAL Wi-Fi legacy caricata in system_server .
  • android.hardware.wifi.supplicant@1.0 . Un'interfaccia HIDL sul processo wpa_supplicant esistente.

NOTA : Android fornisce le seguenti interfacce HIDL che saranno sempre in modalità binderizzata: android.frameworks.* , android.system.* E android.hidl.* (Eccetto android.hidl.memory@1.0 come descritto di seguito).

HAL passthrough

Android richiede che i seguenti HAL siano in modalità passthrough su tutti i dispositivi Android, indipendentemente dal fatto che siano dispositivi di avvio o dispositivi di aggiornamento:

  • android.hardware.graphics.mapper@1.0 . Mappa la memoria nel processo in cui vive.
  • android.hardware.renderscript@1.0 . Passa gli elementi nello stesso processo (equivalente a openGL ).

Tutti gli HAL non elencati sopra devono essere binderizzati per i dispositivi di avvio.

HAL dello stesso processo

Gli HAL dello stesso processo (SP-HAL) si aprono sempre nello stesso processo in cui vengono utilizzati. Includono tutti gli HAL non espressi in HIDL e alcuni non binderizzati. L'appartenenza al set SP-HAL è controllata solo da Google, senza eccezioni.

Gli SP-HAL includono quanto segue:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (fornito dal sistema Android, sempre passthrough)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL convenzionali e legacy

Gli HAL convenzionali (deprecati in Android 8.0) sono interfacce conformi a una specifica ABI (Application Binary Interface) denominata e con versione. La maggior parte delle interfacce del sistema Android ( fotocamera , audio , sensori , ecc.) Sono sotto forma di HAL convenzionali, definiti in hardware / libhardware / include / hardware .

Gli HAL legacy (anch'essi deprecati in Android 8.0) sono interfacce precedenti agli HAL convenzionali. Alcuni importanti sottosistemi (Wi-Fi, Radio Interface Layer e Bluetooth) sono HAL legacy. Sebbene non esista un modo uniforme o standardizzato per descrivere un HAL legacy, qualsiasi cosa precedente ad Android 8.0 che non sia un HAL convenzionale è un HAL legacy. Parti di alcuni HAL legacy sono contenute in libhardware_legacy , mentre altre parti sono intervallate in tutta la codebase.