JNI是什么
定义:Java Native Interface,即Java本地接口
作用:使得Java与本地其他语言(如C,C++)进行交互,可以让Java代码和C,C++代码进行互相调用。
JNI是Java语言的一种特性,属于Java,与Android没有关系。
* NDK是什么
定义:Native Development Kit,是本地开发的工具包
作用:Android本地开发工具集合,快速开发C,C++的动态库,可以自动将so库和应用一起打包成APK。
NDK是专门为Android开发的一个本地开发工具,是Android实现JNI的一种手段。
实例开发
NDK在Android Studio中的配置
1、AS中添加NDK开发包SDK


2、 local.properties中添加配置
配置ndk的路径
ndk.dir=D\:\\Android\\Android_SDK_windows\\platforms\\ndk-bundle

3、gradle.properties中配置
对过期NDK做支持,这里是有个时间限制
android.deprecatedNdkCompileLease=1550631386689

4、build.gradle里配置生成so库的名字
ndk {
//生成的so库名字
moduleName "helloJni"
}

Android声明Native方法
1、新建Java测试类,声明Native方法
2、静态代码块中 加载so库


3、进入JniTest.class同级文件夹下,打开命令行工具,通过命令生成.h的文件
javah -classpath . -jni com.ho.testjni.JniTest

4、java同级目录下新建jni目录,在文件目录下新建 C文件,并且把 .h文件移入到jni目录下。


5、点击 Build - Make Project生成不同平台下的so库,生成的名字是gradle里面配置

5、MainActivity 调用C端 Native方法


总结
本章介绍了Android中NDK的使用过程,通过Java语言调用C语言实现了Java中的JNI。后续文章将介绍 C端调用Java代码的相关内容
1691

被折叠的 条评论
为什么被折叠?



