在 Android 8.0 及更高版本中,較低層級的層被重寫以採用新的、更模組化的架構。運行 Android 8.0 及更高版本的裝置必須支援用 HIDL 編寫的 HAL,但下面列出了一些例外情況。這些 HAL 可以被綁定或直通。在 Android 11 中,也支援使用 AIDL 編寫的 HAL。所有 AIDL HAL 均已綁定。
黏合劑化的 HAL 。以 HAL 介面定義語言 (HIDL) 或 Android 介面定義語言 (AIDL) 表示的 HAL。這些 HAL 取代了早期 Android 版本中使用的傳統 HAL 和舊版 HAL。在 Binderized HAL 中,Android 框架和 HAL 使用 Binder 進程間通訊 (IPC) 呼叫相互通訊。所有搭載 Android 8.0 或更高版本的裝置都必須僅支援綁定化 HAL。
直通 HAL 。 HIDL 包裝的傳統或舊版 HAL這些 HAL 包裝現有的 HAL,並且可以以綁定和同進程(直通)模式為 HAL 提供服務。升級到 Android 8.0 的裝置可以使用直通 HAL。
HAL 模式要求
裝置 | 直通 | 黏合劑化 |
---|---|---|
搭載 Android 8.0 啟動 | 直通 HAL中所列的 HAL 必須是直通的。 | 所有其他 HAL 均已綁定(包括作為供應商擴展的 HAL)。 |
升級至安卓8.0 | 直通 HAL中所列的 HAL 必須是直通的。 | 綁定 HAL 中列出的 HAL必須進行綁定。 |
供應商映像提供的所有其他 HAL 都可以處於直通或綁定模式。在完全符合 Treble 標準的設備中,所有這些都必須綁定。 |
黏合劑化的 HAL
Android 要求在所有 Android 裝置上綁定以下 HAL,無論它們是啟動裝置還是升級裝置:
-
android.hardware.biometrics.fingerprint@2.1
。取代了 Android 8.0 中不再存在的fingerprintd
。 -
android.hardware.configstore@1.0
。 Android 8.0 的新功能。 -
android.hardware.dumpstate@1.0
。該 HAL 提供的原始介面無法進行填充並已更改。因此,dumpstate_board
必須在給定裝置上重新實作(這是一個可選的 HAL)。 -
android.hardware.graphics.allocator@2.0
。在 Android 8.0 中需要進行綁定,因此檔案描述符不必在受信任和不受信任的進程之間共用。 -
android.hardware.radio@1.0
。取代rild
提供的接口,該接口位於其自己的進程中。 -
android.hardware.usb@1.0
。 Android 8.0 的新功能。 -
android.hardware.wifi@1.0
。 Android 8.0 中的新增功能,取代了載入到system_server
中的舊版 Wi-Fi HAL 庫 android.hardware.wifi.supplicant@1.0
。現有wpa_supplicant
進程上的 HIDL 介面。
直通 HAL
Android 要求以下 HAL 在所有 Android 裝置上都處於直通模式,無論它們是啟動裝置還是升級裝置:
-
android.hardware.graphics.mapper@1.0
。將記憶體映射到它所在的進程。 -
android.hardware.renderscript@1.0
。在同一進程中傳遞項目(相當於openGL
)。
上面未列出的所有 HAL 都必須針對啟動裝置進行綁定。
同進程 HAL
同一進程 HAL (SP-HAL) 始終在使用它們的相同進程中開啟。它們包括未在 HIDL 中表達的所有 HAL 以及一些未綁定的 HAL。 SP-HAL 集中的會員資格僅由 Google 控制,無例外。
SP-HAL 包括以下內容:
-
openGL
-
Vulkan
-
android.hidl.memory@1.0
(Android系統提供,始終透傳) -
android.hardware.graphics.mapper@1.0
android.hardware.renderscript@1.0