HIDL 和 AIDL 的历史背景
-
HIDL (HAL Interface Definition Language):
-
Android 7.0 Nougat(2016年) 的发布,Google 引入了 HIDL。它被设计为硬件抽象层(HAL)的接口语言,用于在 Android 系统服务和底层硬件驱动之间建立接口。HIDL 的目标是为 Android 系统的更新提供更好的模块化和版本兼容性,尤其是在项目 Treble 引入之后。首次发布:HIDL 是在 Android 8.0 Oreo 时作为项目 Treble 的一部分发布的,旨在改进 Android 系统更新的效率用于定义硬件抽象层 (HAL) 接口。
-
HIDL 的主要目的是提供一种稳定的接口定义语言,使得 HAL 可以在不同版本的 Android 系统之间保持兼容性。
-
HIDL 支持 C++ 和 Java 后端,并且提供了丰富的类型系统和接口定义功能。、
-
-
AIDL (Android Interface Definition Language):
-
AIDL 从 Android 1.0 开始引入,是 Android 框架中一项基础的 IPC 机制,主要用于进程间通信 (IPC)。
-
AIDL 最初主要用于 Java 环境,但在 Android 11 中,Google 扩展了 AIDL 的功能,使其支持 C++ 和 Rust 后端。
-
Android 11 中引入的 AIDL 跨平台通信功能,使得 AIDL 可以用于定义 HAL 接口,从而替代 HIDL。
-
AIDL 替代 HIDL 的历史和现状
在 Android 10(2019年)之前,HIDL 一直是 HAL 的主要接口定义语言。但自 Android 10 起,Google 开始逐步将 AIDL 引入到底层 HAL 层,允许其作为 HIDL 的替代品,尤其是在 HAL 模块化和简化开发方面有了显著进展。
- AIDL 替代 HIDL:从 Android 11 开始,Google 正式推荐在新开发的 HAL 接口中使用 AIDL,而不是 HIDL。这主要是因为 AIDL 具备更简洁的语法、易于开发者理解和维护,同时也减少了学习新语言的成本。
Google 推荐 AIDL 的原因和趋势
- Google 推荐时间:Google 开始强烈推荐使用 AIDL 代替 HIDL 的时间点是 Android 11 发布时(2020年)。
- 趋势:HIDL 是否会被放弃:
- 长期趋势:根据 Google 的规划,HIDL 逐步淡出新开发中的 HAL 接口是大势所趋。HIDL 主要仍会在现有的接口中保留,尤其是那些在 Android 10 之前开发的设备。但未来的开发工作和接口定义将更多地基于 AIDL。
- AIDL 优势:相比 HIDL,AIDL 的优势在于它更广泛地用于 Android 应用层,同时开发工具链成熟,且社区支持更广泛。因此,AIDL 成为 Google 推动的新方向。
总结来看,HIDL 在现有系统中仍有用武之地,但其新开发中的作用正在逐步减弱,AIDL 的替代趋势越来越明显,特别是在 Android HAL 层。