lineage编译环境里,编译QCamera2的技术总结

原创
08/13 20:09
阅读数 63

在lineage编译环境里,编译QCamera2

源码路径 hardware/qcom/camera/QCamera2

编译命令

mmm hardware/qcom/camera/QCamera2

编译结果在当前编译手机型号的out目录下面的 system/lib/hw 下面,名称是 camera.msm8992.so ,名称里面的msm8992是手机的cpu型号。

这个编译出来后,是不能直接使用的,具体原因未知,有知道原因的大哥请指点一下,本人在接下来的空闲时间里会进行调试分析。

下面总结编译过程中遇到的一些问题,以及解决版本

  1. export_includes needed by import_includes, missing and no known rule to make it

这个问题的原因是没有将头文件导出到obj目录下面对应的静态库或共享库的头目录,典型的路径为 obj/SHARED_LIBRARIES/libmmcamera_interface_intermediates/ ,静态库的话,路径里面的SHARED为STATIC,解决的办法就是在export_includes对应的Android.mk里面加上 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include

  1. 编译出来的共享文件,在编译手机型号的out目录下面的obj里面有,但是obj-arm下面没有

这个问题是Android.mk里面的配置项 LOCAL_32_BIT_ONLY := true ,只要将 true 修改为 $(BOARD_QTI_CAMERA_32BIT_ONLY) 即可。


接着前面的进行错误排查测试

首先在vendor的机型目录下面的libra-vendor.mk里面,注销掉camera.msm8992.so、libmmjpeg_interface.so、libmmcamera_interface.so、libqomx_core.so、libmm-qcamera.so包含这5行,然后,执行mmm hardware/qcom/camera/QCamera2进行编译,将编译成功的这5个so文件复制到对应的目录,即可。

出现的问题记录

  1. hardware/libhardware/modules/camera/Camera.cpp#int Camera::initialize方法里面,调用initDevice方法,返回错误,提示错误:ALOGE("%s:%d: Failed to initialize device111!", func, mId); initDevice方法定义在ExampleCamera.h方法里,hardware/libhardware/modules/camera/目录编译后的文件为system/lib/hw/camera.default.so,目前还无法使这个文件生效,使用make snod生成system.img,刷机后依然无法生效,暂时放弃这个方法
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部