![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
super_kitten
这个作者很懒,什么都没留下…
展开
-
AndroidO Treble架构分析
从AndroidO开始,google引入了Treble架构,目的是为了方便系统升级,将oem定制的东西和Framework分离。1、AndroidO之前的版本在此之前的Android系统架构当中,Android Framework与Android HAL是打包成一个system.img的,而且Framework与HAL之间是紧耦合的,通过链接的方式使用相应的硬件相关so库。老版本的a...转载 2019-01-29 10:57:37 · 219 阅读 · 0 评论 -
AndroidO Treble架构下HIDL服务查询过程
通过前面的分析我们知道,Hal进程启动时,会向hwservicemanager进程注册hidl服务,那么当Framework Server需要通过hal访问硬件设备时,首先需要查询对应的hidl服务,那么Client进程是如何查询hidl服务的呢?这篇文章将展开分析,这里再次以IComposer为例进行展开。frameworks\native\services\surfaceflinger...转载 2019-01-30 15:10:42 · 1073 阅读 · 0 评论 -
AndroidO Treble架构下Tranport类型查询过程
通过前面文章的分析,我们知道,Client进程在查询hidl服务接口对象时,会根据该hidl服务的Tranport类型选择加载方式,如果是HWBINDER,那么就从hwservicemanager中查询,如果是PASSTHROUGH,那么就通过PassthroughServiceManager将hal实现库dlopen到当前进程地址空间。那么hidl服务的Tranport类型是如何得到的呢?[...转载 2019-01-30 15:06:21 · 563 阅读 · 0 评论 -
AndroidO Treble架构下hwservicemanager启动过程
hwservicemanager是hidl服务管理中心,负责管理系统中的所有hidl服务,由init进程启动。service hwservicemanager /system/bin/hwservicemanager user system disabled group system readproc critical onrest...转载 2019-01-30 15:04:10 · 832 阅读 · 0 评论 -
AndroidO Treble架构下Binder对象的转换过程
上文中详细分析了Hal的整个启动过程,这里将补充上文中没有详细分析的Binder对象转换过程,下图为hidl服务的完整注册过程: 1. HwcHal继承于IBase类,是对hw_module_t的封装,该对象位于Hal进程空间; 2. 通过hwservicemanager的binder代理将HwcHal对象注册到hwservicemanager进程空间; 3. 在IPC调用过程中,Hwc...转载 2019-01-30 15:00:57 · 369 阅读 · 0 评论 -
AndroidO Treble架构下Hal进程启动及HIDL服务注册过程
通过前面对Treble架构的介绍,我们知道,Android Framework进程和Hal分离,每个Hal独立运行在自己的进程地址空间,那么这些Hal进程是如何启动的呢?本文以composer hal为例展开分析。 在以下路径有composer hal的rc启动脚本: hardware/interfaces/graphics/composer/2.1/default/android.hardw...转载 2019-01-30 14:55:08 · 394 阅读 · 0 评论 -
AndroidO Treble架构下的变化
AndroidO引入Treble架构后,有那些变化呢? 1. 增加了多个服务管家,AndroidO之前版本有且只有一个servicemanager,现在增加到3个,他们分管不同的服务。 2. 增加了binder通信库,这是为了适配binder域的扩展。 3. 增加了binder域,系统定义了3个binder设备节点,binder驱动分别处理这3个binder设备节点上的binder通信事件...转载 2019-01-30 14:54:42 · 189 阅读 · 0 评论 -
AndroidO Treble架构下的接口文件编译
HIDL是一种接口定义语言,描述了HAL和它的用户之间的接口。同aidi类似,我们只需要为hal定义相关接口,然后通过hidl-gen工具即可自动编译生成对应的C++或者java源文件,定义hal接口的文件命名为xxx.hal,为了编译这些.hal文件,需要编写相应的Android.bp或者Android.mk文件: 1. Android.bp文件用于编译C++; 2. Android.mk文...转载 2019-01-29 11:01:00 · 246 阅读 · 0 评论 -
AndroidO Treble架构下HIDL服务Java框架实现
前面介绍了HIDL服务在native层的实现过程,包括HIDL服务加载创建、服务注册、服务查询过程等,那么Java层是否也实现了相关的服务框架呢? 通常情况下,所有的Hal都实现在native层面,每个hal进程都是一个native进程,由init进程启动,在hal进程启动时会完成HIDL服务注册,Framework Server进程不一定完全是native进程,比如system_server进程...转载 2019-01-30 15:15:47 · 405 阅读 · 0 评论