一. 什么叫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)