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);
   }
}

 

posted @ 2016-01-24 20:15  Xiao.T  阅读(307)  评论(0编辑  收藏  举报