Android Camera原理之编译

《Android Camera架构》
《Android Camera进程间通信类总结》
《Android Camera模块解析之拍照》
《Android Camera模块解析之视频录制》
《Android Camera原理之CameraDeviceCallbacks回调模块》
《Android Camera原理之openCamera模块(一)》
《Android Camera原理之openCamera模块(二)》
《Android Camera原理之createCaptureSession模块》
《Android Camera原理之setRepeatingRequest与capture模块》
《Android Camera原理之编译》
《Android Camera原理之camera provider启动》
《Android Camera原理之cameraserver与cameraprovider是怎样联系的》
《Android Camera原理之camera service与camera provider session会话与capture request轮转》
《Android Camera原理之camera HAL底层数据结构与类总结》
《Android Camera原理之camera service类与接口关系》

Android 项目中,主要是以makefile构建的,构建的文件通过Android.mk或者Android.bp(mk是makefile简称,bp是build project简称),下面为了方便大家梳理Android camera的整体流程,梳理一下Android camera相关模块的编译方法。

1.frameworks/av/camera/目录:

cameraserver目录下:编译module是 ---> make cameraserver -j1

ndk目录下:编译module是 ---> make libcamera2ndk -j1

2.frameworks/av/services/camera/目录:

libcameraservice目录下:编译module是 ---> make libcameraservice -j1

编译生成的文件是:out/target/product/lavender/system/lib/libcameraservice.so

3.hardware/interfaces/camera/目录:


common/1.0/Android.bp:编译module是 ---> make android.hardware.camera.common@1.0 -j1 这个是编译hidl-gen文件的,如果没有更改这些文件,不需要编译这个。

common/1.0/default/Android.bp:编译module是 ---> make android.hardware.camera.common@1.0-helper -j1

编译生成的文件是:android.hardware.camera.common@1.0-helper.a

这是一个静态库文件,不用直接push到手机上,其他的编译库会整合这个文件,编译到它们的动态库中。


device/1.0/Android.bp:编译module是 ---> make android.hardware.camera.device@1.0 -j1

device/1.0/default/Android.bp:编译module是 make camera.device@1.0-impl -j1


device/3.2/Android.bp:编译module是 ---> make android.hardware.camera.device@3.2 j1 这是编译hidl-gen文件的,一般不会更改这些文件。

device/3.2/default/Android.bp:编译module是 make camera.device@3.2-impl -j1

编译生成的文件是:注意是两个,看你手机是32还是64的。

out/target/product/lavender/vendor/lib/camera.device@3.2-impl.so

****out/target/product/lavender/vendor/lib64/camera.device@3.2-impl.so****


device/3.3/Android.bp:编译module是 ---> make android.hardware.camera.device@3.3 -j1

device/3.3/default/Android.bp:编译module是 make camera.device@3.3-impl -j1

device/3.4/Android.bp:编译module是 ---> make android.hardware.camera.device@3.4 -j1

device/3.4/default/Android.bp:编译module是 ---> make camera.device@3.4-impl -j1

metadata/3.2/Android.bp:编译module是 ---> make android.hardware.camera.metadata@3.2 -j1

metadata/3.3/Android.bp:编译module是 ---> make android.hardware.camera.metadata@3.3 -j1


provider/2.4/Android.bp:编译module是 ---> make android.hardware.camera.provider@2.4 -j1

provider/2.4/default/Android.bp:编译module是 ---> make android.hardware.camera.provider@2.4-impl -j1

编译生成的文件:

out/target/product/lavender/vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so

****out/target/product/lavender/vendor/lib64/hw/android.hardware.camera.provider@2.4-impl.so****

4.hardware/libhardware/modules/camera/目录:

3_0/Android.bp:编译module是 ---> make camera.default -j1

编译生成的文件:

out/target/product/lavender/system/lib/hw/camera.default.so

out/target/product/lavender/system/lib64/hw/camera.default.so

下面的3_4目录下的文件是没有被编译进去的。

5.hardware/qcom/camera/目录:

QCamera2/Android.mk:编译module是 ---> make camera.sdm660 -j1(以高通sdm660 芯片为例)

编译生成的文件:out/target/product/lavender/vendor/lib/hw/camera.sdm660.so

6.vendor/qcom/proprietary/mm-camera/目录:

7.vendor/qcom/proprietary/mm-camerasdk/目录:

推荐阅读更多精彩内容