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 binderizzati o passthrough. In Android 11 sono supportati anche gli HAL scritti in AIDL. Tutti gli HAL AIDL sono binderizzati.
HAL binderizzati . HAL espressi nel linguaggio di definizione dell'interfaccia HAL (HIDL) o nel linguaggio di definizione dell'interfaccia Android (AIDL). Questi HAL sostituiscono sia gli HAL tradizionali che quelli precedenti utilizzati nelle versioni precedenti di Android. In un HAL binderizzato, il framework Android e gli HAL comunicano tra loro utilizzando le chiamate IPC (inter-process communication) del binder. Tutti i dispositivi che vengono avviati con Android 8.0 o versioni successive devono supportare solo HAL binderizzati.
HAL passthrough . Un HAL convenzionale o Legacy con wrapping HIDL Questi HAL eseguono il wrapping di HAL esistenti e possono servire l'HAL in modalità binderizzata e stesso processo (passthrough). I dispositivi che eseguono l'aggiornamento ad Android 8.0 possono utilizzare gli HAL passthrough.
Requisiti della modalità HAL
Dispositivo | Passante | Legato |
---|---|---|
Avvia con Android 8.0 | Gli HAL elencati negli HAL passthrough devono essere passthrough. | Tutti gli altri HAL sono binderizzati (inclusi gli HAL che sono estensioni del fornitore). |
Aggiorna ad Android 8.0 | Gli HAL elencati negli HAL passthrough devono essere passthrough. | Gli HAL elencati in HAL binderizzati devono essere binderizzati. |
Tutti gli altri HAL forniti dall'immagine del fornitore possono essere in modalità passthrough OPPURE binderizzata. In un dispositivo completamente compatibile con Treble, tutti questi devono essere binderizzati. |
HAL leganti
Android richiede che i seguenti HALS siano binderizzati su tutti i dispositivi Android, indipendentemente dal fatto che si tratti di dispositivi di avvio o dispositivi di aggiornamento:
-
android.hardware.biometrics.fingerprint@2.1
. Sostituiscefingerprintd
che non è più in Android 8.0. -
android.hardware.configstore@1.0
. Nuovo in Android 8.0. -
android.hardware.dumpstate@1.0
. L'interfaccia originale fornita da questo HAL non poteva essere sottoposta a shimming ed è stata modificata. Per questo motivo,dumpstate_board
deve essere reimplementato su un dato dispositivo (si tratta di un HAL facoltativo). -
android.hardware.graphics.allocator@2.0
. Richiesto per essere binderizzato in Android 8.0 in modo che i descrittori di file non debbano essere condivisi tra processi attendibili e non attendibili. -
android.hardware.radio@1.0
. Sostituisce l'interfaccia fornita darild
che vive nel proprio processo. -
android.hardware.usb@1.0
. Nuovo in Android 8.0. -
android.hardware.wifi@1.0
. Nuovo in Android 8.0, sostituisce la precedente libreria HAL Wi-Fi caricata insystem_server
-
android.hardware.wifi.supplicant@1.0
. Un'interfaccia HIDL sul processowpa_supplicant
esistente.
HAL passthrough
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 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 aopenGL
).
Tutti gli HAL non elencati sopra devono essere binderizzati per i dispositivi di lancio.
HAL con lo stesso processo
Gli HAL Same-Process (SP-HAL) si aprono sempre nello stesso processo in cui vengono utilizzati. Includono tutti gli HAL non espressi in HIDL così come alcuni che non sono 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