android JNI基本使用

laynezhang / 文 发表于2017-05-17 09:30 次阅读 jni
  1. 确保安装好NDK开发环境

  2. 新建一个类,定义好native方法,例如:

    public class NdkJniUtils {        public native String getCLanguageString();      }

 3.命令行进入,app所在路径,找到javah所在的路径

xxxxxapp> cd build termediates classes debug

4.使用javah工具生成NdkJniUtils对应的.h头文件,xxx_xxx_NdkJniUtils.h

xxxxxdebug> javah -jni xxx.xxx.NdkJniUtils

5.在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,实现.h头文件里的getCLanguageString方法

JNIEXPORT jstring JNICALL Java_xxx_xxx_NdkJniUtils_getCLanguageString  (JNIEnv *env, jobject obj){     return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");  }

6.接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:

defaultConfig {    

    ......

   ndk{        moduleName "YanboberJniLibName"         //生成的so名字        abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。    } }

7.现在生成的so库名字也有了,那就去代码的NdkJniUtils java文件添加静态初始化load代码,添加如下:

static {        System.loadLibrary("YanboberJniLibName");   //defaultConfig.ndk.moduleName    }

8.最后,可以在java代码中调用,NdkJniUtils的getCLanguageString方法了

收藏 赞 (0) 踩 (0)