Dans Android 8.0 et versions ultérieures, les couches de niveau inférieur sont réécrites pour adopter une nouvelle architecture plus modulaire. Les appareils exécutant Android 8.0 et versions ultérieures doivent prendre en charge les HAL écrits en HIDL, à quelques exceptions près répertoriées ci-dessous. Ces HAL peuvent être bindérisés ou passthrough. Dans Android 11, les HAL écrits en AIDL sont également pris en charge. Tous les AIDL HAL sont liants.
HAL bindérisés . HAL exprimés en langage de définition d'interface HAL (HIDL) ou en langage de définition d'interface Android (AIDL). Ces HAL remplacent les HAL conventionnels et hérités utilisés dans les versions antérieures d'Android. Dans un HAL binderisé, le framework Android et les HAL communiquent entre eux à l'aide d'appels de communication inter-processus (IPC) de classeur. Tous les appareils lancés avec Android 8.0 ou version ultérieure doivent uniquement prendre en charge les HAL binderisés.
Passthrough HAL . HAL conventionnels ou hérités enveloppés de HIDL Ces HAL enveloppent les HAL existantes et peuvent servir la HAL en modes binderized et même processus (passthrough). Les appareils mis à niveau vers Android 8.0 peuvent utiliser des HAL de relais.
Exigences du mode HAL
Appareil | Traverser | Lié |
---|---|---|
Lancement avec Android 8.0 | Les HAL répertoriées dans Passthrough HALs doivent être passthrough. | Toutes les autres HAL sont liées (y compris les HAL qui sont des extensions de fournisseur). |
Passez à Android 8.0 | Les HAL répertoriées dans Passthrough HALs doivent être passthrough. | Les HAL listés dans les HAL bindérisés doivent être bindérisés. |
Tous les autres HAL fournis par l'image du fournisseur peuvent être en mode passthrough OU binderized. Dans un appareil entièrement compatible Treble, tous ces éléments doivent être liants. |
HAL bindérisés
Android nécessite que les HALS suivants soient bindérisés sur tous les appareils Android, qu'il s'agisse d'appareils de lancement ou de mise à niveau :
-
android.hardware.biometrics.fingerprint@2.1
. Remplacefingerprintd
qui ne sont plus dans Android 8.0. -
android.hardware.configstore@1.0
. Nouveau dans Android 8.0. -
android.hardware.dumpstate@1.0
. L'interface d'origine fournie par cette HAL n'a pas pu être calée et a été modifiée. Pour cette raison,dumpstate_board
doit être réimplémenté sur un périphérique donné (il s'agit d'un HAL facultatif). -
android.hardware.graphics.allocator@2.0
. Requis pour être lié dans Android 8.0 afin que les descripteurs de fichiers n'aient pas à être partagés entre les processus approuvés et non approuvés. -
android.hardware.radio@1.0
. Remplace l'interface fournie parrild
qui vit dans son propre processus. -
android.hardware.usb@1.0
. Nouveau dans Android 8.0. -
android.hardware.wifi@1.0
. Nouveau dans Android 8.0, remplace l'ancienne bibliothèque Wi-Fi HAL chargée danssystem_server
-
android.hardware.wifi.supplicant@1.0
. Une interface HIDL sur le processuswpa_supplicant
existant.
HAL de relais
Android nécessite que les HAL suivants soient en mode relais sur tous les appareils Android, qu'il s'agisse d'appareils de lancement ou de mise à niveau :
-
android.hardware.graphics.mapper@1.0
. Mappe la mémoire dans le processus dans lequel elle vit. -
android.hardware.renderscript@1.0
. Passe des éléments dans le même processus (équivalent àopenGL
).
Tous les HAL non répertoriés ci-dessus doivent être bindérisés pour les dispositifs de lancement.
HAL de même processus
Les HAL de même processus (SP-HAL) s'ouvrent toujours dans le même processus dans lequel elles sont utilisées. Ils incluent tous les HAL non exprimés en HIDL ainsi que certains qui ne sont pas liants. L'adhésion à l'ensemble SP-HAL est contrôlée uniquement par Google, sans exception.
Les SP-HAL incluent les éléments suivants :
-
openGL
-
Vulkan
-
android.hidl.memory@1.0
(fourni par le système Android, toujours passthrough) -
android.hardware.graphics.mapper@1.0
android.hardware.renderscript@1.0