使用ndk-build编译Camera效果库文件

注:改方法用于Camera Tuning开发人员编译效果库文件,适用于Spectra 2xx之前架构的平台。

 

NDK简介

NDK全称Native Development Kit, 是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java一起打包成apk。本文不做任何关于NDK开发的介绍,只对NDK提供的工具的使用做一个简介,主要方便Camera Tuning人员使用NDK来编译生成chromatix对应的库文件,同时驱动大神也可以用来编译eeprom的库文件。

            好处:编译时检查语法错;速度快于buildSo软件。

NDK配置

工具下载,可在官网下载。

Google官网下载地址:

https://developer.android.google.cn/ndk/downloads/index.html

使用ndk-build编译Camera效果库文件

 

根据自己硬件选择对应平台,下载相应的NDK版本。

 

Windows配置(Linux环境大同小异,编译时将bat命令全部替换为sh命令即可):

下载Window版本之后,文件解压如下:

使用ndk-build编译Camera效果库文件

 

 

配置环境变量:

“计算机”—“属性”—“高级系统设置”--“系统环境变量”--“新建”,输入如下内容:

使用ndk-build编译Camera效果库文件

 

注:变量值为ndk-build解压之后的根目录。

新建完成之后,点击“确定”,选择“Path”—“编辑”,在字符串末尾添加如下字符:

“%NDK_ROOT%”

注:添加时若path字符串末尾如果没有分号(”;”),需手动添加,与上一个变量值分开。

            添加完成之后,点击“确定”,完成环境变量配置。

 

验证

打开cmd,输入:

     ndk-build -v

            环境变量配置无误情况下,应输出如下内容:

            使用ndk-build编译Camera效果库文件

           

            接下来进行工程代码的修改。

Chromatix工程添加(新方法)

  1. 使用ndk-build会进行语法,因此需要包含必要的头文件,这部分文件通过从对应平台的源码中拷贝,位置如下:

注:这部分已经整理成压缩包,可以直接解压到C盘根目录使用

vendor\qcom\proprietary\mm-camerasdk\sensor\includes

使用ndk-build编译Camera效果库文件

 

vendor\qcom\proprietary\mm-camera\common

使用ndk-build编译Camera效果库文件

 

     Common目录下的camera_defs_i.h和camera_dbg.h会被使用到。

  1. 头文件稍作整理

因不同平台,头文件会有差异,因此以不同平台分别建立各自的文件夹:

使用ndk-build编译Camera效果库文件

 

不同的3A header也根据3A version来建立各自的目录:

使用ndk-build编译Camera效果库文件

 

将common中的如下两个头文件copy到3A header目录下:

使用ndk-build编译Camera效果库文件

                       

  1. 添加chromatix效果工程文件

从代码中拷贝一份chromatx文件,放置includes文件夹同一个目录下:

使用ndk-build编译Camera效果库文件

 

includes文件夹和chromatix文件夹得平级,因为脚本包含的路径是这么一个相对的关系。

 

新增:

修改脚本中includes头文件的位置,将路径修改为决定路径,这样在同一台电脑上配置完成之后,脚本可在任意位置执行,更为方便

:: Defined by user

set INCLUDES_ROOT=C:\mm-camerasdk\includes ——新增

set BOARD_PLATFORM=msm8937

set HEADER_VERSION=0309

 

LOCAL_C_INCLUDES=%INCLUDES_ROOT%\%BOARD_PLATFORM%\%HEADER_VERSION%

对应脚本名为:buildSo_win_v2.1.bat(目前最新)

附件新增头文件目录,可直接解压使用,包含MSM8937和SDM636平台头文件。

 

将Scripts中的脚本buildSo_v1.2.bat拷贝到chromatix工程目录里下,记事本打开之后修改如下关键部分:

:: Defined by user

set BOARD_PLATFORM=sdm636

set HEADER_VERSION=0310

将BOARD_PLATFORM修改为自己工程对应的平台,如:msm8937,SDM660等

将HEADER_VERSION修改对应的3A的版本号,如0309,0310等

如上两个信息决定查找头文件的位置,因此两个名字保证是在includes下存在并且有对应的头文件!!!

修改完成之后直接双击运行即可编译,次方法不需要对chromatix工程文件做额外的修改。

若在编译中,提示缺少某个头文件,源码中找到之后copy对includes对应目录下即可。

工具集合:

NDK:

http://192.168.128.202/svn/repos/HQATD/4.Image/软件工具/android-ndk-r14b-windows-x86_64.zip

chromatix_demo:

pdf附件中

Enjoy…

 

 

编译和push验证

将Chromatix_NDK目录中“Script”下的“buildSo.bat”和“push.ver1.2.bat”拷贝到Chromatix工程根目录下:

使用ndk-build编译Camera效果库文件

 

双击运行“buildSo.bat”,编译结果如下:

使用ndk-build编译Camera效果库文件

 

会在当前路径下生成两个目录:

使用ndk-build编译Camera效果库文件

 

Obj为生成的链接文件,libs下为生成的库文件:

使用ndk-build编译Camera效果库文件

 

手机在开启adb并连接电脑的情况下,直接双击“push.ver1.2.bat”即可完成push操作。

 

可能遇到的错误

1.双击buildSo.bat之后报如下错误:

使用ndk-build编译Camera效果库文件

 

解决方法:查看和目录同级的Android.mk是否修改正确,效果参数根目录下的那个Android.mk是必须要修改的,具体修改方法参考文中第二步。

 

2.报错如下:

使用ndk-build编译Camera效果库文件

        

头文件找不到,查看源码对应的Android.mk中,对头文件目录的指向是否正确。

3.报错如下:

使用ndk-build编译Camera效果库文件

 

源码有语法错,第14行,多了几个逗号,实现了检查语法错的功能:

使用ndk-build编译Camera效果库文件

        

 

Chromatix工程范例

工程demo模版已上传网站:

     https://gitee.com/mecode08/chromatix_demo/

代码已验证过, ndk配置没有问题的情况下,代码编译通过,下载后可直接在上面修改和验证。