Effective in 2026, to align with our trunk stable development model and ensure platform stability for the ecosystem, we will publish source code to AOSP in Q2 and Q4. For building and contributing to AOSP, use android-latest-release. The android-latest-release manifest branch will always reference the most recent release pushed to AOSP. For more information, see Changes to AOSP .
硬件抽象层 (HAL) 概览
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
硬件抽象层 (HAL) 是一种抽象层,其中包含硬件供应商要实现的标准接口。借助 HAL,硬件供应商可以实现设备专属的较低级别功能,而不会影响或修改较高级别层中的代码。
注意: HAL 在 Android 8 之前就已存在。不过,Android 8 可确保每个 HAL 都有一个标准接口。如需了解 Android 8 之前的 HAL 架构,请参阅旧版 HAL 。
必知术语
下面列出了本部分文档中使用的术语的定义:
Android 接口定义语言 (AIDL)
一种类似 Java 的语言,用于以与所用编程语言无关的方式定义接口。AIDL 允许在 HAL 客户端与 HAL 服务之间进行通信。
绑定式 HAL
使用binder 进程间通信 (IPC) 调用与其他进程进行通信的 HAL。绑定式 HAL 在独立于使用它们的客户端的进程中运行。绑定式 HAL 会向服务管理器注册,以便客户端可以访问其功能。为 Android 8 及更高版本编写的 HAL 是绑定式 HAL。
HAL 客户端
访问 HAL 服务的进程。
HAL 接口
HAL 客户端和服务均用于进行通信的通用接口。
HAL 服务
硬件专用代码,例如用于访问特定设备相机的代码。您必须在供应商分区中针对所定位的版本,实现兼容性矩阵中列出的所有必需 HAL。如需详细了解兼容性矩阵,请参阅兼容性矩阵 。
您还可以创建新的 HAL 接口或扩展某个 HAL 的接口,以支持您硬件的独特功能。
硬件接口定义语言 (HIDL)
这种语言用于通过与所用编程语言无关的方式定义接口。HIDL 可实现 HAL 客户端与 HAL 服务之间的通信。
注意: 从 Android 13 开始,HIDL 已废弃。您应使用 Android 接口定义语言 (AIDL) 来构建 HAL,而不是使用 HIDL。支持之前使用 HIDL 编写的 HAL。
Same Process (SP) HAL
一组受限的封装 HAL。该组 HAL 由 Google 控制。SP HAL 包括:
稳定的 C 映射器 5 HAL
OpenGL
Vulkan
android.hidl.memory@1.0(由 Android 系统提供,一律封装)
android.hardware.renderscript@1.0
注意: 某些 HAL 实现会将旧版接口(例如 libhardware 中的接口)封装在 AIDL 或 HIDL 封装容器中。
封装的 HAL
在 Android 8 之前创建的 HAL 服务,但已使用 AIDL 或 HIDL 封装容器进行封装,以便兼容 Android 8 及更高版本。
后续操作
本页面上的内容和代码示例受内容许可 部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-13。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-03-13。"],[],[]]