JNI(一):基础理论知识

前言

在Android应用中,一般输出给用户的都是音视频和文字,这些输出的结果往往都是处理过的,例如美颜相机,直播等之类的应用。这些应用用Java层的依赖或者库来实现经常都不太如人意。而这个时候就要用JNI了。
当涉及到用JNI来实现需求的时候,就需要更高要求的专业知识,所以学习JNI是Android进阶的必由之路。

介绍

JNI

  • 定义:Java Netive Interface ,Java本地接口,也代表这一种协议
  • 作用:让Java跟其他本地(C/C++)语言交互,示意图:
  • 注意:JNI是相对于Java而言的,是Java语言的一种特性,与Android无直接关系。即Java可以调用其他本地语言,其他本地语音也可以调用Java语言

NDK

  • 定义:Netive Develoment Kit,Android工具开发包
  • 作用:用来编译Android中的C/C++库,生成.so文件,将其一起打包成APK。通过NDK可以让JNI与本地语言(C/C++)交互。
  • 注意:NDK是相对于Android而言的,是Android实现JNI技术的手段。通过NDK我们可以更高效的进行JNI开发。

JNI的优点

JNI的优点取决于C/C++的优点

  • apk的Java层容易被反编译,而C/C++库反编译的难度比较大
  • 移植方便,库可以在其他嵌入式平台上再次使用
  • 相对于Java而言,C/C++的执行速度是比较快的,安全性也是比较高的

JNI的使用

  • 配置Android NDK环境
  • 关联Andorid Studio项目与NDK
  • 创建本地代码文件(即需要在 Android项目中调用的本地代码文件)
  • 创建Android.mk文件 & Application.mk文件
  • 编译上述文件,生成.so库文件,并放入到工程文件中
  • 在Andoird Studio项目中使用NDK实现JNI功能

本篇只记录JNI的基础知识,更多关于JNI的使用可参看:
JNI(二):环境配置和简单使用