天天看点

Android NDK环境搭建及调用JNI的简单步骤

Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。

2. 在项目中新建一个名为jni的文件夹,在jni中新增Android.mk文件,文件内容如下:

LOCAL_MODULE:当前模块的名称

LOCAL_SHARED_LIBRARIES:当前模块需要依赖的共享库。 

LOCAL_SRC_FILES:所要调用的C源码

3. 把PhotoUtil.c文件复制到jni目录下

PhotoUtil.c,包含一个图片处理方法:

方法Java_com_wangjie_customviews_PicturesDialog_functionToBlur的取名方式:

Java_:固定

com_wangjie_customviews:java包名

PicturesDialog:java类名

functionToBlur:java使用的方法名

4. 编译C源码,生产so库文件

进入jni目录:

ndk-build 或者

ndk-build APP_PLATFORM=android-8

执行完毕之后,android项目的libs目录下就会生成so文件:

\libs\armeabi\libPhotoUtil.so

5. 在android中java代码调用:

加载photoUtil库(libPhotoUtil.so)

并添加:

然后在其他地方只需要调用该functionToBlur()方法即可:

参考:

<a href="http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/section5.html">http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/section5.html</a>

<a href="http://developer.android.com/tools/sdk/ndk/index.html#Installing">http://developer.android.com/tools/sdk/ndk/index.html#Installing</a>

<a href="http://stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk">http://stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk</a>