hal
文章平均质量分 87
千里马学框架
安卓架构师,安卓技术专家,android framework
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
defaultPassthroughServiceImplementation在android新老版本的差异
但是这里看到对应的构造Interface::getService,可以看出这个Interface其实是依赖我们传递模板,这个getService其实实现是hidl工具编译自动生成的。这个注册服务方式以前安卓8.1老版本的其实还比较常见,新版本安卓没有再使用这种方式都是使用如下方式。这里面说明了目的就是为了减少相关的对接口库相关的强依赖,想直接通过名字这种方式进行注册,实现松耦合。有学员朋友很可能就被它的名字误解了,以为这个就是直通式,这块比较疑惑,同时。原创 2025-02-12 12:01:28 · 714 阅读 · 0 评论 -
android12/13/14上支持新加入Hidl的hal方法-No more HIDL interfaces can be added to Android. Please use AIDL
但是很多学员提出,公司和方案上就是要求做hidl,很多时候不是自己可以随意决定,所以那是否高版本就真的不可以进行hidl的开发么?如果这样为啥系统自带了很多hidl是怎么可以通过编译校验的呢?明显看到 "android.hardware.audio@7.1"也是这样添加的,所以我们也可以把自己hidl这样添加一下。但是这样可能会让系统整个版本任何人都可以添加hidl,这样确实不太合理波及范围太大。上面是不是就看到了白名单,把android自带的一些hidl都是放入白名单。这样保存好既可以编译通过了。原创 2024-07-07 00:41:26 · 1828 阅读 · 1 评论 -
android hal aidl升级部分-android framework车载手机系统开发
第一版本的aidl没有指定版本,只有一个aidl_api下面current文件夹即默认就是版本v1,那么如果后面有相关的接口修改呢?大概就是修改时候一定要考虑老版本的兼容问题,一般不删除原来接口和修改。可以看到这里的版本多了版本1,而且还带有hash号文件。Android.bp需要把原来V1版本的库变成V2。执行后相关的aidl_api目录多个一个版本目录。MyTestImpl.cpp增加相关方法实现。可以看到out临时文件目录多了V2相关的库。MyTestImpl.h增加相关方法引入。原创 2023-12-13 21:36:13 · 1949 阅读 · 1 评论 -
hal深入剖析之aidl实战-android framework车机车载手机系统开发
创建最重要的aidl接口文件,需要在第一步创建的目录下`-- mytest编写aidl内容:String key;int value;还是就是parcelable都是需要进行结构化,成员属性写清楚到aidl。原创 2023-12-12 17:11:41 · 5618 阅读 · 0 评论 -
android framework实战之VNDK深入剖析
官方:解释:即给vendor分区的native程序提供的开发套件,包含了被vendor的native需要使用的一系列的库。原创 2023-12-10 13:35:41 · 2360 阅读 · 0 评论 -
Hidl直通式Passthrough分析案例-Mapper模块
更多framework干货请关注“千里马学框架”原创 2023-12-02 01:25:36 · 2009 阅读 · 0 评论 -
Android 经典hal开发实战-千里马android framework车载车机手机系统开发
上面的load方法就是我们说的hardware动态性的关键,它是在运行时候才真正依赖具体硬件抽象so,编译期间只需要依赖公共的hardware相关公共类既可以,不需要so,所以这里就给硬件抽象提供商带来很大灵活性,哪怕硬件厂商不提供也一般会有一个default的so保证不会产生什么严重的崩溃和强依赖问题,大大减低了aosp的代码对于硬件抽象的各个厂商的耦合性。在结构体 hw_module_methods_t 中只有一个成员,它是一个函数指针,名字是open,它主要作用就是用来打开硬件抽象层中给的硬件设备。原创 2023-11-28 21:51:29 · 2436 阅读 · 0 评论 -
HIDL实战开发-千里马android framework车载车技手机系统开发
上面default默认生成的bp是so,这里要把他变成可执行的服务,需要增加一个service.cpp作为main方法载体。需要在自己设备目录找到自己的manifest.xml然后加入自己的hidl。5、添加service.cpp,自启动rc,修改Android.bp。4、生成一个自动生成 hal 接口的 Android.bp。6、需要搞个test,来测试一下服务是否ok,这个时候需要。主要目的是把test目录的Android.bp可以加入编译。执行后生成如下Test.cpp,Test.h文件了。原创 2023-11-26 23:12:21 · 2663 阅读 · 0 评论 -
hwbinder与binder返回值差异之IPCThreadState原理剖析
上面都是Bp端对多参数返回的一些处理分析,但在分析Bn源码时候,也发现Bn端也有这个多参数返回值相关的回调参数传递,上面不是说了不是远端的回调吗?哈哈,这个我们就得看传入的这个TransactCallback callback到底是怎么样的,如果传入的这个方法里面有进行对parcel进行解析,然后再回调是不是就可行了。如果generates返回参数只有一个,而且这个参数类型还是基础数据类型,那么就不会通过回调方式返回,而是直接以返回值方式返回。请问这个genarates的实现原理是怎么样的?原创 2023-11-17 14:36:26 · 550 阅读 · 0 评论 -
hidl hwbinder和binder混合使用相关的joinThreadPool问题解答
所以很多时候并不需要在自己的业务代码中显式调用的相关的joinRpcThreadpool和startThreadPool相关方法,因为在hidl相关生成的代码中会调用相关读取hwbinder线程池启动。所以大家在看代码时候发现自己业务代码中没有hwbinder相关的线程池启动,但实际有相关hwbinder线程则可以考虑去相关的hidl生成代码中查找。原创 2023-11-15 19:15:03 · 551 阅读 · 0 评论 -
hal开发之hidl/aidl支持的绑定式直通式详细讲解
这个和上面其实绑定式理解没啥区别,只是在服务端实现有区别,这种实现是直接自己服务端实现hal,而上面实现却是调用了老版本的hal库,这种方式要求新加入的hal库都是这种实现方式,自己实现demo就是一般这种方式。新的架构之下,framework和hal运行于不同的进程,所有的HAL采用新的HIDL技术来完成。这种方式就是采用是绑定式,这样对system的应用或者框架,就可以通过hidl或aidl接口来通讯,但是绑定服务的具体实现其实还是调用了以前的老hal so方式来实现服务的。原创 2023-10-17 22:59:12 · 1853 阅读 · 0 评论
分享