企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## android下JNI开发 ### what 什么是JNI * JNI java native interface native本地 java本地接口 * 通过JNI可以实现java和本地代码之间相互调用(JNI 是一个协议, 有了这个协议可以使Java代码和C/C++代码相互调用.java直接调用C/C++不可以,因为java运行在jvm虚拟机中,而且两者的语法不同) * jni可以看做是翻译 实际上就是一套协议 ![](http://i.imgur.com/SL362NP.png) ### why 为什么要用JNI * Java 一处编译到处运行 * ①java运行在虚拟机上 JNI可以扩展java虚拟机的能力 让java代码可以调用驱动(驱动是用C/C++写的) * ②java是解释型语言 运行效率相对较低 C/C++的效率要高很多 通过jni把耗时操作方法C/C++可以提高java运行效率 * ③ java代码编译成的.class 文件安全性较差, 可以通过jni 把重要的业务逻辑放到c/c++去实现,c/c++反编译比较困难 安全性较高,java反编译比c语言容易 * C历史悠久 1972年C 通过JNI可以调用优秀的C开源类库 #### 使用纯Java开发App的缺点 - 在某些场合下,使用纯Java开发Android应用程序不完美,比如: - 有高性能算法,Java语言无法满足 - 有跨平台需求,希望将App移植到iOS(现在很多设计都是C语言和C++来写底层,Android来写界面) - 已有代码的重用 - ### How 怎么用JNI * java * c/c++ 能看懂 会调用 * JNI开发流程 NDK native develop kit ### 更新换代 - 由于原先的NDK开发,写Android的jni库时,需要用到Android.mk,Application.mk这些;随着Android studio版本更新功能逐渐完善,以及CMake的应用,Android.mk,Application.mk这些配置都由CMake来完成,本篇文章只是了解JNI相关的知识点,如何使用新版本Android studio来进行C++开发,可以参考鄙人下面的另一篇文章----Android studio进行C++的NDK开发