硬件抽象层 (HAL) 概述

硬件抽象层 (HAL) 是一种抽象层,它具有供硬件供应商实现的标准接口。HAL 允许硬件供应商实现较低级别的设备专用功能,而不会影响或修改较高级别层中的代码。

必需术语

以下是本文档此部分中使用的术语的定义列表

Android 接口定义语言 (AIDL)
一种类似于 Java 的语言,用于以独立于所用编程语言的方式定义接口。AIDL 允许 HAL 客户端和 HAL 服务之间进行通信。
Binder 化 HAL
一种 HAL,它使用 Binder 进程间通信 (IPC) 调用与其他进程通信。Binder 化 HAL 在与使用它们的客户端不同的进程中运行。Binder 化 HAL 在服务管理器中注册,以便客户端可以访问其功能。为 Android 8 及更高版本编写的 HAL 已 Binder 化。
HAL 客户端
访问 HAL 服务的进程。
HAL 接口
HAL 客户端和服务用于通信的通用接口。
HAL 服务

特定于硬件的代码,例如与您的特定设备的相机通信的代码。您必须实现供应商分区中针对您所定位版本的兼容性矩阵中列出的所有必需 HAL。有关兼容性矩阵的更多信息,请参阅兼容性矩阵

您还可以创建新的 HAL 接口,或扩展 HAL 的接口,以支持您硬件的独特功能。

硬件接口定义语言 (HIDL)

一种用于以独立于所用编程语言的方式定义接口的语言。HIDL 支持 HAL 客户端和 HAL 服务之间的通信。

同一进程 (SP) HAL

一组受限的封装 HAL。此集合的成员资格由 Google 控制。SP HAL 包括

  • 稳定 C 映射器 5 HAL
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0(由 Android 系统提供,始终封装)
  • android.hardware.renderscript@1.0
封装 HAL

在 Android 8 之前创建的 HAL 服务,但已封装在 AIDL 或 HIDL 封装器中,以与 Android 8 及更高版本配合使用。

下一步是什么?