Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Tipi di 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 R sono supportati anche gli HAL scritti in AIDL. Tutti gli HAL AIDL sono vincolati.

  • HAL Binderized. HAL espressi nel linguaggio di definizione dell'interfaccia HAL (HIDL) o nel linguaggio di definizione dell'interfaccia Android (AIDL). Questi HAL sostituiscono gli HAL convenzionali e legacy utilizzati nelle versioni precedenti di Android. In un HAL Binderized, il framework Android e gli HAL comunicano tra loro utilizzando chiamate di comunicazione tra processi di IP (Binder Inter-Process). Tutti i dispositivi che si avviano con Android 8.0 o successivo devono supportare solo HAL binderized.
  • Passthrough HALs. Un HAL convenzionale o legacy avvolto in HIDL. Questi HAL racchiudono gli HAL esistenti e possono servire gli HAL in modalità binderized e con lo stesso processo (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 vincolati (compresi 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 in HAL Binderized devono essere binderized.
Tutti gli altri HAL forniti dall'immagine del fornitore possono essere in modalità passthrough O binderized. In un dispositivo pienamente compatibile con gli alti, tutti questi devono essere vincolati.

HAL Binderized

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

  • android.hardware.biometrics.fingerprint@2.1 . Sostituisce l' 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 nuovamente implementato su un determinato dispositivo (si tratta di un HAL opzionale).
  • android.hardware.graphics.allocator@2.0 . Richiesto per essere vincolato in Android 8.0, quindi i descrittori di file non devono essere condivisi tra processi affidabili e non attendibili.
  • android.hardware.radio@1.0 . Sostituisce l'interfaccia fornita da rild che vive nel suo stesso processo.
  • android.hardware.usb@1.0 . Novità in Android 8.0.
  • android.hardware.wifi@1.0 . Novità 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à binderized: android.frameworks.* , android.system.* E android.hidl.* (Ad eccezione di android.hidl.memory@1.0 come descritto di seguito).

Passthrough HALs

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

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

Tutti gli HAL non elencati sopra devono essere vincolati ai dispositivi di lancio.

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 che non sono vincolati. L'iscrizione 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 (obsoleti in Android 8.0) sono interfacce conformi a una specifica interfaccia binaria (ABI) con nome e versione. La maggior parte delle interfacce di sistema Android ( videocamera , audio , sensori , ecc.) Sono sotto forma di HAL convenzionali, che sono definite in hardware / libhardware / include / hardware .

Gli HAL legacy (anch'essi deprecati in Android 8.0) sono interfacce che precedono gli HAL convenzionali. Alcuni sottosistemi importanti (Wi-Fi, Radio Interface Layer e Bluetooth) sono HAL legacy. Sebbene non esista un modo uniforme o standardizzato per descrivere un HAL legacy, tutto ciò che precede Android 8.0 che non è un HAL convenzionale è un HAL legacy. Parti di alcuni HAL legacy sono contenute in libhardware_legacy , mentre altre parti sono intervallate in tutta la base di codice.