持续更新...
1. so替换不生效
现象:调试一般流程是自己加几行日志编so推进去,替换原来so。结果发现自己加的日志没打印,像没替换成功一样。
解决:首先adb shell一直cd到so路径看是否替换成功。如果替换成功了要考虑一个问题,它是调用32位so还是64位so,调用位置在哪?推的位置正确吗。
Show time!
以camera provider进程为例,里面加载了v4l2的so。先查进程pid:
adb shell
ps -A | grep camera
会显示:
第一个就是我们要找的进程,pid为766。下一步看这个进程依赖哪些so,具体路径应该在哪:
showmap 766
显示:
后面还有一堆不贴了,贴下我们要找的v4l2 so的部分。
可见,依赖so路径应该是vendor/lib/hw。那比如你推进了lib64目录下,自然白推。
当然,对于64位系统你可以考虑将启动服务的rc文件64位版本推进去,删掉32位版本。这样整套都是64位的了。
2. Cannot find entry ... in either framework or device manifest
现象:出现如上日志。
解决:未将服务注册,只顾推文件配置文件忘写了吧,没写配置文件hwservicemanager无法获取到服务。
一般要编译时候把vintf的xml文件编译进去。如果只是验证的话:
先尝试在/vendor/etc/vintf/manifest/或/vendor/etc/vintf/manifest/目录下新增单独的xml文件。
或system/etc/vintf/manifest.xml或vendor/etc/vintf/manifest.xml按已有的配置格式配置你推入的服务(注意这样有时会死机)。