Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

HAL類型

在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使用綁定程序進程間通信(IPC)調用相互通信。使用Android 8.0或更高版本啟動的所有設備必須僅支持綁定的HAL。
  • 直通HAL。 HIDL包裝的常規或舊式HAL 。這些HAL封裝了現有的HAL,並且可以在綁定和相同過程(通過)模式下為HAL服務。升級到Android 8.0的設備可以使用直通HAL。

HAL模式要求

設備直通活頁夾
與Android 8.0一起啟動 傳遞HAL中列出的HAL必須是傳遞。 所有其他HAL都是綁定的(包括作為供應商擴展的HAL)。
升級到Android 8.0 傳遞HAL中列出的HAL必須是傳遞。 綁定的 HAL中列出的HAL必須進行綁定。
供應商映像提供的所有其他HAL可以處於直通或綁定模式。在完全符合Treble的設備中,所有這些都必須綁定。

綁定的HAL

Android要求將以下HALS綁定到所有Android設備上,無論它們是啟動設備還是升級設備:

  • 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提供的接口,該接口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接口。

注意 :Android提供了以下HIDL接口,這些接口始終處於綁定模式: android.frameworks.*android.system.*android.hidl.* (如下所述的android.hidl.memory@1.0除外)。

直通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

常規和舊式HAL

常規HAL(在Android 8.0中已棄用)是符合特定命名和版本控制的應用程序二進制接口(ABI)的接口。大部分Android系統界面( 攝像頭音頻傳感器等)採用常規HAL的形式,它們在hardware / libhardware / include / hardware下定義。

舊版HAL(在Android 8.0中也已棄用)是早於常規HAL的接口。一些重要的子系統(Wi-Fi,無線電接口層和藍牙)是傳統的HAL。雖然沒有統一或標準化的方式來描述舊版HAL,但早於Android 8.0的任何版本(不是常規HAL)都是舊版HAL。一些舊式HAL的一部分包含在libhardware_legacy中 ,而其他部分則散佈在整個代碼庫中。