本篇文章是继续上一篇分析的Android Camera(一) Provider启动流程 (androidP)(HIDL)_we1less的博客-优快云博客
总结一下:所以在这个流程中
这个路径下的 hardware/interfaces/camera/provider/2.4/default/service.cpp
CameraProviderService的return defaultPassthroughServiceImplementation就是以直通式向ServiceManager中注册一个服务,这个服务是由
/vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so
这个动态库的HIDL_FETCH_ICameraProvider()函数提供的new CameraProvider()
这个CameraProvider在initialize()函数中以同样的方式load进一个动态库,这个动态库的路径为
/vendor/lib/hw/camera.xxxx.so,同时保存在new CameraModule(rawModule);中这样就能利用这个指针访问so中的方法了。
sp<IBase> base = pm->get(descriptor, instance).withDefault(nullptr);
路径 system/libhidl/transport/ServiceManagement.cpp
上一篇说到get函数同时上一篇文章中也总结了
fullPath = /vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so
lib = android.hardware.camera.provider@2.4-impl.so
sym = HIDL_FETCH_ICameraProvider
handle = dlopen(fullPath.c_str(), dlMode);
关于dlopen和dlsym函数已经在这里介绍dlopen / dlsym函数(动态链接库)_we1less的博客-优快云博客
<
本文详细解析了Android CameraProvider服务的启动流程,包括通过HIDL交互注册服务的过程、动态库加载及CameraProvider对象的初始化等关键步骤。
最低0.47元/天 解锁文章
539

被折叠的 条评论
为什么被折叠?



