JNI基础知识

JNI基础概念

JNI本意为Java Native Interface,为了方便Java调用C、C++等本地代码所封装的一层接口。当出现一些无法用Java处理的任务时,就可以借用JNI技术去完成。
一般来说有以下几种情况需要用到JNI技术:

  • 需要调用Java语言不支持的依赖于操作系统平台特性的一些功能。例如:调用当前Android系统的底层功能,而Java无法实现,就需要用到JNI
  • 为了提升应用部分功能的性能,必须采用其他语言实现。例如:OpenCV进行图像识别

为了开发者方便使用JNI技术,Android提供了NDK这个工具集合,通过NDK可以在Android中更加方便的通过JNI访问Native代码。NDK还提供了交叉编译器,只要简单的修改build.gradle中的cMake配置就可以支持生成特定CPU的动态链接库。

NDK有如下优点:

  • 提高代码的安全性。由于so库反编译比较困难,提高了程序的安全性。
  • 可以很方便的植入已有的C/C++库,例如FFmpeg、OpenCv等
  • 提高程序在某些特定情况下的执行效率,但不能明显提升Android程序的性能。
  • 易于代码复用和移植,用C/C++开发的代码也可以移植到其他平台上

JNI目前有着非常广泛的应用场景,包括音视频开发、热修复、插件化等当前热门技术。

源码中的JNI

JNI基础使用

JNI原理简略分析

JNI参数相关


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!