lineage編譯環境裏,編譯QCamera2的技術總結

在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,刷機後依然無法生效,暫時放棄這個方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章