JNI 简介
- 名称:Java Native Interface 即Java本地接口
- 作用:使得Java与本地其他类型语言(如C、C++)交互
- JNI是Java调用Native语言的一种特性,JNI属于Java的,与Android无直接关系
- Java通过JNI可以调动由C/C++实现的驱动,从而扩展Java虚拟机
实现步骤:
- 在java中声明Native方法(即需要调用的本地方法)
- 编译上述Java源文件(javac得到.class文件)
- 通过javap命令导出JNI的头文件(.h文件)
- 编译.so库文件
- 通过Java命令执行Java程序,最终实现Java调用本地代码
NDK 简介
- 名称:Native Development Kit,是Android的一个工具开发包
- 作用:快速开发C、C++的动态库,并自动将so和应用一起打包成APK
- 在Android的场景下使用JNI,提供了把.so和.apk打包的工具
- NDK提供的库有限,仅拥有算法效率和敏感的问题
- 提供了交叉编译器。用于生成特定的CPU平台动态库
NDK和JNI的关系
JNI是实现Java调用C/C++的途径,NDK是Android中实现JNI的手段,即在Android中通过NDK从而实现JNI的功能!