在android里使用hidl技术,代替了以前的dlopen的方式来加载第三方的so.从android8.0开始使用Android Treble框架来加载service.这里从我在实际开发中遇到的问题说起,在VTS测试服务是否存在时,老是报Cannot find entry XXX服务。各种关键接口找不到,也不知道问题出在哪里。所以只好看其源码实现了。
1.各种hal文件都继承胃IBase接口,而IBase定义在system/libhidl/transport/base目录下
2…hal会被hidl-gen程序进行解析,生成输出文件。下面看两个核心的接口的生成,一个是getService 一个是registerAsService
3.一般代码里经常看到IXXXXService.getService()。但是getService这个接口根本没查询不到。其实这个接口,是hidl-gen自动生成的。其核心文件是system/tools/generateCpp.cpp
接口declareGetService申明getService定义,截图如下接口implementGetService实现了getService的定义,部分截图如下declareServiceManagerInteractions接口申明registerAsService
implementServiceManagerInteractions接口实现registerAsService从自动生成的代码来看,registerAsService基本就是调用hwservicemanager add接口把自己注册到map中去。这一块代码大家有兴趣自己去看,这里关注的是getService的调用。
来看下大体的流程图这里要注意的是,我这个代码比较旧。根最新的版本差异是很大的,但原理差不多。
1.首先getService获取服务,紧接着就是getTransport的接口调用。我个人有理解就是在这里做了一层拦截处理,在配置文件里面没找到我们所要求的服务,就会报错并结束服务的获取。
这里首先会去system/etc/vintf/manifest.xml文件去找我们调用者的服务名,如果找到就返回。
如果没找到就会去vendor/etc/vintf/manifest.xml文件去找,如果找到就返回。如果没找到则返回NULLPRT
同时打印Cannot find entry xxx in either framework or device manifest.
所以,如果我们碰到这样的LOG后,首先要去检测这两个文件里面有没有配置我们调用的服务,没有就要自己配置。一般是没有配置引起的,当然也有可能是xml增加的语法有问题,比如对齐。个人感觉C++对xml支持不够强大。
以上是我自己的理解,如有不妥之处敬请提出。大家一起学习

Cannot find entry in either framework or device manifest相关推荐

  1. android WIFI相关问题集合

    1.Wi-Fi hotspot cannot be used normally 问题描述: android P - Settings - Network & internet - Hotspo ...

  2. SA6155P max9288 camera 笔记-2

    GMSL方案,还是记录一下吧,调试过程中随手记录 比较杂乱,没有整理,随便看看吧 MAX9288 3.12Gbps GMSL Deserializers for Coax or STP Input a ...

  3. Android 8.0 VTS 测试 FAIL 项解决记录

    本文是转自https://zhuanlan.zhihu.com/p/28426650 注意:本文基于 Android 8.0 进行分析. 1. 前言 这篇文章所记录的是我自己在 Amlogic 平台上 ...

  4. 【Android】An activity without a UI must call finish() before onResume() completes

    今天在配合客户实现安装第三方app时,遇到一个问题,安装过程中,会长时间黑屏(30s~60s),最初怀疑是否是安装时,android系统资源(内存和CPU)剩余不多,导致安装时间较长,但是这样的话,解 ...

  5. Android R config_biometric_sensors默认通用定制common可好?

    前面已经写过一个帖子-<Android R Setupwizard无指纹.人脸录入>发现,这个无异于开了个定制值,加入某项目中共分支不同varint有FP设备,而另外的又没有. 这时候合理 ...

  6. rk3368 Android9.0 HIDL调试记录

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

  7. Android 8.0 VTS 测试 FAIL 失败项解决记录

    Android 8.0 VTS 测试 FAIL 失败项解决记录 Qidi 2017.08.09 (Markdown & Haroopad) 注意:本文基于 Android 8.0 进行分析. ...

  8. USB OTG(Host) 、 USB ADB(Device)、DWC3 Charge

    USB ADB: Corresponding to USB Device Mode USB OTG: Corresponding to USB Host Mode USB EAP: Correspon ...

  9. Linux Driver 和Device匹配过程分析

    Linux Driver 和Device匹配过程分析 1,总线注册匹配过程 1.1 struct platform_driver 1.2 struct device_driver 1.3 PCIe总线 ...

最新文章

  1. Python基础学习笔记--字符串、列表
  2. MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(4)
  3. 三篇文章了解 TiDB 技术内幕——说存储
  4. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)
  5. 牛客网【每日一题】7月29日题目精讲—Max Power
  6. php删除一张表数据的时候 把另一张表的数据也删除,剔除第一张表的数据时,修改第二张表的相关字段的数值...
  7. cefpython基础入门
  8. threadpoolexecutor参数_ThreadPoolExecutor的使用
  9. BZOJ 4753 二分+树形DP
  10. Kubernetes资源分配(limit/request)
  11. 一个关于淘宝评论,从输入指定商品信息,直接得到评论+图片的一次经验
  12. 解决android SDK不能更新,appium测试混合app无法返回webview问题
  13. Pr入门系列之六:使用标记
  14. 百度地图自定义信息窗口
  15. 关于微信小程序分享及分享朋友圈、复制链接
  16. QGIS制作精美地图
  17. 苹果手机用stream获取wskey
  18. 64位 regsrv win10_win10 专业版 64位 系统 频繁蓝屏,MEMORY_MANAGEMENT - Microsoft Community...
  19. 2022年亚太地区大学生数学建模竞赛/2022年亚太杯ABCD题思路
  20. 弹幕视频网站的盈利模式 ——以哔哩哔哩弹幕网为例

热门文章

  1. 牛小刚的Spring自学笔记之IOC
  2. 人工智能学期心得体会
  3. IOS开发之——设置APP图标、名字、启动页(50)
  4. 越来越快的jsRuntime——Bun
  5. 戴尔淘宝开旗舰店 与官网购买产品享受同样服务
  6. 首旅如家蝉联世界酒店集团10强,中高端酒店开业超1000家
  7. Office 2016 卡顿问题!如果其他方法都没有用就关掉硬件加速!
  8. Back键和Home键的屏蔽
  9. Home键和返回键的区别
  10. 如何将asc文件转换成的txt文件,并导入到sql server中?