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 协议 ,转载请注明出处!