一、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中的配置

a、Android Studio中添加NDK开发包SDK


b、在Gradle的 local.properties中添加配置

配置ndk的路径

ndk.dir=D\:\\Android\\Android_SDK_windows\\platforms\\ndk-bundle

c、在Gradle的 gradle.properties中配置

对过期NDK做支持,这里是有个时间限制

android.deprecatedNdkCompileLease=1550631386689

d、app的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代码的相关内容

更多相关文章

  1. Android中Intent的使用示例
  2. Android平台上的JNI技术介绍
  3. android中DexClassLoader类的使用
  4. 使用AIDL(Android接口描述语言)设计和使用远程接口
  5. android 简单同步与异步
  6. Android(安卓)recovery UI实现分析
  7. 在android里调用第三方动态链接库.so
  8. Android调用shell脚本并获得输出
  9. 分别在Linux和Android中用C语言写系统日志

随机推荐

  1. Android的UI显示原理之Surface的渲染
  2. Android常用界面布局
  3. 《Monkey Android》第6课点击事件的四种
  4. Android拍照功能——TakePhoto
  5. Android完美解析setContentView 你真的理
  6. LeakCanary的使用
  7. android 数据存储之SQLite
  8. Android(安卓)Shared Preferences
  9. Android基础学习之Intent
  10. android values-v11和values-v14文件夹是