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。
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绑定式和直通式区别相关推荐
- Android8.0 静态receiver接收不到隐式广播 Background execution not allowed: receiving Intent
Android8.0的新特性值得注意一下,不然会出现很多莫名的问题... 后台执行限制 Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系 ...
- android8.0学习(1)---Android Treble 概述
1 Android Treble Android 8.0 版本的一项新元素是 Project Treble.这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松. ...
- Android8.0适配那点事(二)
小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行"啃食" 1.启动页适配 近日,我无意中发现应用在8.0系统上面启动页崩溃, ...
- android8.0以上新增Camera(七)
比如有人想新增一个虚拟摄像头,当用户app打开摄像头设备时,打开的不是系统默认的camera hal代码,而是自己指定的代码,用自己事先准备好的视频数据,来喂给app:也有人想在系统默认的一套ap ...
- rk3368 Android9.0 HIDL调试记录
rk3368 Android9.0 HIDL调试记录 Platform: RK3368 OS: Android 9.0 Kernel: 4.4.194 文章目录 rk3368 Android9.0 H ...
- Android8.0运行时权限策略变化和适配方案
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com Android8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过Android ...
- android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头
概述 Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口.网络摄像头通常支持 USB ...
- 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 ...
- angularjs 表单校验指令_angular4.0的模板式表单、响应式表单及其错误提示
模板式表单 NgForm.NgModel.NgModelGroup是FormModule里的内容,NgForm会自动拦截标准的表单处理事件(eg.提交),angular用ngSubmit代替标准的表单 ...
最新文章
- 算法笔记-堆相关、堆的定义、大小根堆、算法程序实现、堆的算法题、C#写法
- Spring使用Quartz配置调度事务
- ubuntu安裝opencv3.4.1
- StringToInt
- 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
- QT中如果出现: warning: 'nullptr' is incompatible with C++98等类似警告
- Uml工具StarUML破解
- 用c写按键精灵脚本语言,按键精灵脚本代码大全 按键精灵命令使用方法
- 人工智能对智能建筑有哪些影响,智能建筑发展存在哪些问题?
- 编写程序将电子邮件EmailAddressBook.txt和电话簿TeleAddressBook.txt合并为一个完整的通讯录AddressBook.txt(Address.py)
- MATLAB--数字图像处理 图像直方图均衡化
- 浅谈尾调用和尾递归(C语言)
- FxFactory 7 Pro for Mac(fcpx/ae/pr视觉特效插件包)v7.2.5
- Emlog程序纯黑色调CYP音乐模板源码
- 【11年华科计算机考研经验】追梦华中大-我的漫漫考研路
- GOF 面向对象 23 种设计模式详解
- 11.2.0.4,ASM实例异常宕机,ORA-29740: evicted by instance number 2
- HTTP/1.1新建会话失败 解决方法
- 韦氏进销存软件功能更新20220223
- wincc服务器硬件,wincc客户机服务器方案中,操作系统有没有特别要求啊,-工业支持中心-西门子中国...
热门文章
- ring0检测隐藏进程
- javascript获取窗口位置、绝对位置、事件位置等
- Lua学习笔记(1)
- Effective C++条款7:为多态基类声明virtual析构函数
- 微软 .NET Core 3.0 版本发布
- Vue CLI 3.0 正式发布,Vue.js 开发标准化工具
- css清除浮动的几种方法_清除浮动的几种方法
- android判断密码字符串,逆向分析苏宁易购安卓客户端加密到解密获取明文密码(附demo验证) | WooYun...
- houghlinesp找到多条直线_拿什么拯救焦虑的你,一个有勇气的人终将找到他的路...
- linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...