jni编译android项目

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

jni编译android项目_第1张图片

把use default build command勾掉,后面的build command里填的的命令,在window环境下如上面写,如果是其他系统不一样。后面的build directory是选择当期的项目。

jni编译android项目_第2张图片

之后需要给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  

以上几个都比较老的配置,新的配置可以看链接

jni编译android项目_第3张图片

最后一个是opencv-for-android的sdk的路径。

至于NDKROOT怎么添加的:

jni编译android项目_第4张图片

NDK怎么加的:

jni编译android项目_第5张图片

以下有关编译命令的说明:

http://www.cnblogs.com/linguanh/p/4624768.html

这里有提到一些

你可能感兴趣的:(java)