AIDL: Android Interface Definition Language,即Android接口定义语言。用来定义Android基于Binder通信的Client和Service之间的接口。 即负责App之间通信,App与Framework通信。
HIDL: HAL(Hardware Abstract Layer) interface definition language,即HAL接口定义语言。 用来定义Android Framework和Android HAL实现之间的接口,即负责Framework与HAL之间的通信。
HIDL(HAL Interface Definition Language):
HIDL主要用于定义硬件抽象层(HAL)口,用于与底层件交互。
HIDL使用C++语言编写,并且支持跨进程信。
HIDL接口通过Binder机进行通信,可以在同的进程之间传递数据调用方法。
HIDL接口通常由硬件供商提供,并用于访问底层硬件功能,如摄头、传感器等。
AIDL(Android Interface Definition Language):
AIDL主用于定义应用程序件之间的接,例如Activity、Service。
AIDL使用似于Java的语法,并支持跨进程信。
AIDL接口通过Binder机制进行通信,可以在同的进程之间传数据和调用方法。
AIDL接口通常由应用程序开发人员定义,并用实现不同组件间的通信。
为什么需要HIDL?
OEM不愿意升级设备上的Android系统,原因是Android升级意味着framework升级,framework升级之后,由于framework是和HAL一起被编译为system.img的,导致HAL也需要升级,耦合度很高。
针对这种情况,google在Android O中引入了Treble计划,也就是用HIDL解耦Framework和HAL,这样Framework就不再直接调用HAL,而是通过HIDL来使用HAL模块,每个HAL模块对应一个HIDL服务,framework通过HwBinder创建HIDL服务,通过HIDL服务打开HAL下的设备,从而实现HAL从system.img中分离,被单独编进vendor.img,从而简化了Android升级。
从 Android 14 开始,我们鼓励合作伙伴和 SoC 供应商将当前 HIDL HAL 实现替换为 AIDL HAL 实现。:https://source.android.com/docs/core/audio/aidl-hidl-comp?hl=zh-cn
标签:HAL,AIDL,HIDL,接口,Framework,Android From: https://www.cnblogs.com/ArsenalfanInECNU/p/17972200