Android HAL 层概览

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

Android HAL是Android系统中的硬件抽象层,为不同硬件设备提供统一的访问接口。经历了传统HAL、HIDL HAL和AIDL HAL三个阶段,HAL层方式和通信方式有所改变。

🔎

延伸解读

HAL 为何成为 Android 硬件适配的关键层

HAL 位于 Android framework 与 Linux kernel driver 之间,核心作用是屏蔽不同硬件设备的差异,为上层提供统一访问接口。同时,它允许硬件厂商将核心算法等实现细节放在用户空间的 HAL 层,由于该层遵循 Apache 协议,厂商可以选择不开源,从而在满足 Android 兼容性的同时保护自身利益。

三代 HAL 演进:从 so 库到进程化 Binder 服务

Android 8 以前,HAL 以 so 库形式存在,由 Framework 通过 JNI 加载;Android 8 到 10 引入 HIDL,HAL 变为进程加 Binder 服务,Framework 通过 HIDL 调用;Android 11 起引入 AIDL,HAL 仍以进程加 Binder 服务存在,但 App 可直接通过 AIDL 访问 HAL 层。演进的主线是 HAL 存在方式与层级间通信方式的改变。

AIDL HAL 带来的访问路径变化

在传统 HAL 和 HIDL HAL 阶段,App 通常需要经过 Framework 提供的 Binder 服务间接操作硬件。到了 AIDL HAL 阶段,App 可以直接通过 AIDL 访问 HAL 层的 Binder 服务来操作硬件,这减少了中间环节,但也意味着 App 与 HAL 的耦合方式发生了变化,开发者需要关注接口定义与权限控制。

❓

Q&A

Android HAL的主要功能是什么?

Android HAL的主要功能是为不同硬件设备提供统一的访问接口,屏蔽硬件差异。

Android HAL经历了哪些发展阶段?

Android HAL经历了传统HAL、HIDL HAL和AIDL HAL三个阶段。

传统HAL与HIDL HAL有什么区别?

传统HAL以so库的方式存在,通过JNI加载,而HIDL HAL以进程加Binder服务的方式存在。

AIDL HAL的引入有什么意义?

AIDL HAL的引入简化了HIDL HAL,允许App直接通过AIDL访问HAL层的Binder服务。

HAL层如何帮助硬件厂商?

HAL层帮助硬件厂商隐藏设备相关模块的实现细节,保护其核心算法。

HAL层在Android系统中的位置是什么?

HAL层位于Android框架和Linux内核驱动之间。

🏷️

标签

➡️

继续阅读