本文主要是介绍Android12之如何查看hidl服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.前言
本篇目的:在Android源码中提供了cmd、service、dumpsys来获取Binder服务的工具,但是Android8.0以后推出HIDL服务, 前边三个工具是无法获取到的,下面我们如何获取HIDL服务呢?
注意:Android13开始,Camera将使用AIDL替代HIDL。
2.解决方式
Google为我们提供了一个脚lshal的工具,下面来看下它的用法。
<1>.lshal用法
在system/tools/hidl/test/hidl_test/hidl_test_servers.cpp是一个创建HIDL服务的demo,可以编译以后运行查看ForkServer<IBaz>::run("dyingBaz");
static void run(const std::string& serviceName){defaultPassthroughServiceImplementation<T>(serviceName);
}
注意:HIDL服务名为:dyingBaz启动服务hidl_test_servers64向hwservicemanager注册HIDL服务"dyingBaz"
# ./hidl_test_servers64# lshal |grep dyingBaz
X ? android.hardware.tests.baz@1.0::IBaz/dyingBaz N/A N/A
<2>.查看系统所有HIDL服务
1.binderized模式
HIDL向hwservicemanager(/dev/hwbinder)注册binder服务。
2.直通模式
HIDL passthrough implementations
# lshal
| All HIDL binderized services (registered with hwservicemanager)
VINTF R Interface Thread Use Server Clients
FM Y android.frameworks.cameraservice.service@2.0::ICameraService/default 0/2 1293 674
<2>.service和lshal命令对比
# service list|grep ICameraProvider
注意:service命令什么也没找到,为空。
# lshal |grep ICameraProvider
<3>.查看manifest清单
# lshal --init-vintf
<4>.查看HIDL服务名、线程数量和客户端梳理
# lshal list -Vliepc
| All HIDL binderized services (registered with hwservicemanager)
这篇关于Android12之如何查看hidl服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!