Android8.0 HIDL绑定式和直通式区别

以前Adnroid版本的hal和framwork的代码紧密联系起来的,Google为了framework升级的方便在Android 8.0 上对 Android 操作系统底层进行了重新架构。新的架构已经了解一部分,但仍需要不断学习,加上最近需要将一些项目升级到Android O,所以决定该好好看看了,阅读代码过程中发现存在一种后缀为.hal的文件,该文件改变了我的一些久的思想。该文件具体的作用和语法后续博文再介绍。

目前HAL分为下面4类,具体可以参考下面链接提供,那里写的最详细,这里只记录下我自己的理解。

1.绑定式 HAL:这个完全由hidl语言描述,由hidl-gen工具自动生成的hal。此模式下framwework和hal通过进程间binder通信。(camera相关的是/dev/hwbinder节点)。 
Android 8.0 或后续版本的设备都必须只支持绑定式 HAL。 

Android8.0 HIDL绑定式和直通式区别_第1张图片

2.直通式HAL:这个是由hidl 封装的hal,具体是在hidl封装处dlopen传统的hal(目前8.0上Camera是这种形式)大概形如如下面这个。下面右侧三个子部分都是在同一个进程中。封装层dlopen传统的hal,这样就不用更改太多代码。 

Android8.0 HIDL绑定式和直通式区别_第2张图片

3.Same-Process HAL:如它名字所示,是在使用它们的进程中打开的HAL,同一进程这里就不需要binder通信了。

4.传统 HAL 和旧版 HAL:目前我的理解是实现HAL_MODULE_INFO_SYM的hal,google给出下面的解释.

传统 HAL(在 Android 8.0 中已弃用)是指与具有特定名称及版本号的应用二进制接口 (ABI) 标准相符的接口。大部分 Android 系统接口(相机、音频和传感器等)都采用传统 HAL 形式(已在 hardware/libhardware/include/hardware 下进行定义)。

                                              Android8.0 HIDL绑定式和直通式区别_第3张图片
参考文章:https://source.android.com/devices/architecture/hal-types

你可能感兴趣的:(Android定制系统服务,HIDL学习)