绑定式 HAL。以 HAL 接口定义语言 (HIDL) 或 Android 接口定义语言 (AIDL) 表示的 HAL。这些 HAL 取代了早期 Android 版本中使用的传统 HAL 和旧版 HAL。在绑定式 HAL 中,Android 框架和 HAL 之间通过 Binder 进程间通信 (IPC) 调用进行通信。所有在推出时即搭载了 Android 8.0 或后续版本的设备都必须只支持绑定式 HAL。
直通式 HAL。以 HIDL 封装的传统 HAL 或旧版 HAL。这些 HAL 封装了现有的 HAL,可在绑定模式和 Same-Process(直通)模式下使用。升级到 Android 8.0 的设备可以使用直通式 HAL。
绑定式 HAL
Android 要求所有 Android 设备(无论是搭载 Android O 的设备还是升级到 Android O 的设备)上的下列 HAL 均为绑定式:
android.hardware.biometrics.fingerprint@2.1。取代 Android 8.0 中已不存在的 fingerprintd。
android.hardware.configstore@1.0。Android 8.0 中的新 HAL。
android.hardware.dumpstate@1.0。此 HAL 提供的原始接口可能无法继续使用,并且已更改。因此,dumpstate_board 必须在指定的设备上重新实现(这是一个可选的 HAL)。
android.hardware.graphics.allocator@2.0。在 Android 8.0 中,此 HAL 必须为绑定式,因此无需在可信进程和不可信进程之间分享文件描述符。
android.hardware.radio@1.0。取代由存活于自身进程中的 rild 提供的接口。
android.hardware.usb@1.0。Android 8.0 中的新 HAL。
android.hardware.wifi@1.0。Android 8.0 中的新 HAL,可取代此前加载到 system_server 中的旧版 WLAN 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 要求所有 Android 设备(无论是搭载 Android O 的设备还是升级到 Android O 的设备)上的下列 HAL 均在直通模式下使用:
android.hardware.graphics.mapper@1.0。将内存映射到其所属的进程中。
android.hardware.renderscript@1.0。在同一进程中传递项(等同于 openGL)。
上方未列出的所有 HAL 在搭载 Android O 的设备上都必须为绑定式。