以前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。

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

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 下进行定义)。


参考文章:https://source.android.com/devices/architecture/hal-types

Android8.0 HIDL绑定式和直通式区别相关推荐

  1. Android8.0 静态receiver接收不到隐式广播 Background execution not allowed: receiving Intent

    Android8.0的新特性值得注意一下,不然会出现很多莫名的问题... 后台执行限制 Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系 ...

  2. android8.0学习(1)---Android Treble 概述

    1 Android Treble Android 8.0 版本的一项新元素是 Project Treble.这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松. ...

  3. Android8.0适配那点事(二)

    小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行"啃食" 1.启动页适配 近日,我无意中发现应用在8.0系统上面启动页崩溃, ...

  4. android8.0以上新增Camera(七)

      比如有人想新增一个虚拟摄像头,当用户app打开摄像头设备时,打开的不是系统默认的camera hal代码,而是自己指定的代码,用自己事先准备好的视频数据,来喂给app:也有人想在系统默认的一套ap ...

  5. rk3368 Android9.0 HIDL调试记录

    rk3368 Android9.0 HIDL调试记录 Platform: RK3368 OS: Android 9.0 Kernel: 4.4.194 文章目录 rk3368 Android9.0 H ...

  6. Android8.0运行时权限策略变化和适配方案

    版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com Android8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过Android ...

  7. android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头

    概述 Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口.网络摄像头通常支持 USB ...

  8. Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究

    Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究 在github上阅览README.md以获得最佳阅读体验,点这里 v-for响应式key ...

  9. angularjs 表单校验指令_angular4.0的模板式表单、响应式表单及其错误提示

    模板式表单 NgForm.NgModel.NgModelGroup是FormModule里的内容,NgForm会自动拦截标准的表单处理事件(eg.提交),angular用ngSubmit代替标准的表单 ...

最新文章

  1. 算法笔记-堆相关、堆的定义、大小根堆、算法程序实现、堆的算法题、C#写法
  2. Spring使用Quartz配置调度事务
  3. ubuntu安裝opencv3.4.1
  4. StringToInt
  5. 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
  6. QT中如果出现: warning: 'nullptr' is incompatible with C++98等类似警告
  7. Uml工具StarUML破解
  8. 用c写按键精灵脚本语言,按键精灵脚本代码大全 按键精灵命令使用方法
  9. 人工智能对智能建筑有哪些影响,智能建筑发展存在哪些问题?
  10. 编写程序将电子邮件EmailAddressBook.txt和电话簿TeleAddressBook.txt合并为一个完整的通讯录AddressBook.txt(Address.py)
  11. MATLAB--数字图像处理 图像直方图均衡化
  12. 浅谈尾调用和尾递归(C语言)
  13. FxFactory 7 Pro for Mac(fcpx/ae/pr视觉特效插件包)v7.2.5
  14. Emlog程序纯黑色调CYP音乐模板源码
  15. 【11年华科计算机考研经验】追梦华中大-我的漫漫考研路
  16. GOF 面向对象 23 种设计模式详解
  17. 11.2.0.4,ASM实例异常宕机,ORA-29740: evicted by instance number 2
  18. HTTP/1.1新建会话失败 解决方法
  19. 韦氏进销存软件功能更新20220223
  20. wincc服务器硬件,wincc客户机服务器方案中,操作系统有没有特别要求啊,-工业支持中心-西门子中国...

热门文章

  1. ring0检测隐藏进程
  2. javascript获取窗口位置、绝对位置、事件位置等
  3. Lua学习笔记(1)
  4. Effective C++条款7:为多态基类声明virtual析构函数
  5. 微软 .NET Core 3.0 版本发布
  6. Vue CLI 3.0 正式发布,Vue.js 开发标准化工具
  7. css清除浮动的几种方法_清除浮动的几种方法
  8. android判断密码字符串,逆向分析苏宁易购安卓客户端加密到解密获取明文密码(附demo验证) | WooYun...
  9. houghlinesp找到多条直线_拿什么拯救焦虑的你,一个有勇气的人终将找到他的路...
  10. linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...