Jni编译android项目
在图像处理中,使用opencv主要有两种方法:
一种是用javacv的方法,把相关图像处理方法的jar包载下来,直接用就可以了,属于纯java的处理图像的方式,但是存在一些问题,比如javacv目前不支持中文,javacv没有API文档作参考,其次用java语言实现具体的图像操作复杂度较C语言有增加。
具体实现方法:http://blog.csdn.net/victory06057231/article/details/8026188
第二种是用C++编写图像处理的相关操作,通过NDK编译生成.s文件,JNI接口进行调用,界面部分的操作可以用java语言编写。
通过第二种方式的操作:
http://blog.csdn.net/watkinsong/article/details/9849973
具体实现方法:
下载adt bundle 不用单独eclipse的原因是,当时下载eclipse时单纯用于java开发,所以并没有安装CDT插件,本想安装CDT完成,但是网上提供的两种基本的方法,一种用在线安装,一种下载下来再安装,在线安装非常花时间,离线安装要找下载的相关压缩文件。花费了很久的时间,所以直接用集成了C++开发的adt bundle提供了方便。但是adt bundle的缺点是支持一个版本的开发版本,比如android4.4不过完全够用。
下载NDK,用于编译C程序,下载的版本是r9,之后在系统环境变量里面配上路径,在path里面。在Window控制台下面就可以用ndk-build进行本地cpp代码的编译,而不用cygwin编译,可以直接在adt-bundle里面完成编译。
下载opencv for android的sdk,从opencv官网上面下载。Opencv有两种使用方式,一种是opencv的java版本,这种不是本地调用的方法。第二种是用opencv的C++版本,将C++编译成.s链接库,然后在android开发中调用,本地C++代码需要NDK进行编译。
完成安卓项目的布局文件,创建一个类用于放使用了C++动态库的函数,这个文件是.java结尾。在该项目中创建一个jni文件夹,里面放要编译的C++文件,以及Android.mk,Application.mk文件,Android.mk中的include一句需要修改。
编译过程,由于已经安装NDK,可以选在eclipse中编译。选择C++环境下
然后右键,properties
把use default build command勾掉,后面的build command里填的的命令,在window环境下如上面写,如果是其他系统不一样。后面的build directory是选择当期的项目。
之后需要给GNC C++编译器添加路径:
# for NDK r8b and later:
${NDKROOT}/platforms/android-9/arch-arm/usr/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
${ProjDirPath}/../../sdk/native/jni/include
以上几个都比较老的配置,新的配置可以看链接
最后一个是opencv-for-android的sdk的路径。
至于NDKROOT怎么添加的:
NDK怎么加的:
以下有关编译命令的说明:
http://www.cnblogs.com/linguanh/p/4624768.html
这里有提到一些