一. 什么叫JNI
JNI(Java Nativie Interface)即Java本地接口,JNI是一个协议,这个协议用来沟通Java代码和本地代码(C/C++)
通过这个协议,Java代码就可以调用外部的C/C++代码,同时外部的C/C++代码也可以调用Java代码
深层解析:我们已经知道Android系统架构中最内层的是Linux 内核,上面是系统运行库,这层中就包含一些C/C++的库,
那么再上层的应用程序层和应用程序框架层我们知道是用Java语言写的,这些程序如何沟通系统运行库中的C/C++代码呢?
这就需要用到JNI,说的通俗一点:JNI是Java和C代码之间的桥梁
二 为什么要使用JNI?
1. 首先JNI扩展了java 虚拟机的能力,一些功能如:驱动开发(wifi-hotspot) 2.3 无线热点共享只能用C/C++代码代码
2. Native code效率高,如对数学运算,实时渲染的游戏上,音视频处理 (极品飞车,opengl,ffmpeg)等
3. 复用代码 (文件压缩,人脸识别…),因为C语言出现的时间比较快,我们可以复用一些前人已经开发出来的功能
4. 还有一些特殊的应用场景如车载系统等本身由android实现,但实现功能确需要一些C代码。
三 怎么用JNI?
要用JNI,我们需要以下三个条件
1. 会写和读C/C++语言
2. 掌握JNI的调用流程
3. NDK(native develop kits)