Android JNI 环境搭建(ADT)
ADT 下搭建jni环境:
1、下载NDK开发包,android-ndk-r10e-windows-x86_64.exe,然后解压缩到 ${ndkroot}。
2、打开ADT,Window->Android->NDK->选择1中解压缩的文件夹 ${ndkroot}。
3、在需要进行JNI开发的项目上右键,Android Tools -> Add Native Support -> hello。
4、一切顺利的话,在左侧就出现一个jni文件夹,里面有hello.cpp和Android.mk两个文件。
5、配置cpp文件的include文件,项目右键-> C/C++ General -> Path and Symbols -> Includes选项卡 -> 左侧选中c,cpp -> 右侧add ${ndkroot}/platforms/android-8/arch-arm/user/include。
到这里,JNI开发环境配置完成
使用注意事项:
1、Java代码中System.loadLibrary对应Android.mk中的LOCAL_MODULE。
2、(C++ name mangling) JNI接口以C的方式定义,但使用C++进行实现,因为C++要处理函数重载,会在函数名称中加上参数信息导致生成的函数名称与定义的不同,所以在cpp文件中的函数定义前都要加上extern "C" ,让cpp文件中的函数名得以保留,否则JNI无法找到对应的C++方法名。
一个例子(libhello.so)
Java端:
static { System.loadLibrary("hello"); } public native String HelloWorld();
cpp文件:
#include <jni.h> extern "C" { JNIEXPORT jstring JNICALL Java_com_example_jni_MainActivity_HelloWorld(JNIEnv* env, jobject thiz) { char* str = "HelloWorld!"; return (env)->NewStringUTF(str); } }