【吐槽】
安卓正因为强大、灵活,导致安卓的各种工具/语法和版本强相关,对于初入门来说,网上各种demo可难复刻了,老有些小bug
【小普及】
.jar文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名,在windows本地可以直接右键解压,在androidstudio中可以使用gradle命令解压
【正文】
java层调用底层C/C++/其他语言库的方法有两种,JNI(Java Native Interface)和JNA(Java Native Access)
JNI
在Java中,使用关键字native来声明一个native方法。这样的方法在Java中只有方法的声明,而实际的实现是由其他语言(库)编写的。在运行时,Java虚拟机会通过JNI(Java Native Interface)来加载和执行native方法
JNA
JNA框架是一个开源的Java框架,建立在经典的JNI的基础之上的一个框架。非常强大、易用。其中JNA是对JNI的封装,能让java使用者更好的使用本地的动态库.JNA比JNI调用底层C/C++等其他语言方便,并且支持结构体、指针等复杂类型的传递
JNA基本原理
NA里面包括了一个DLL或是so库,你的JAVA代码调用JNA的jar包,这个jar包再去调用他的中间库,然后中间库再去处理真正的C/C++的库。
对JNA\JNI两种更详细的解释可以参考这个优秀文章,把原理和细节讲得很明白
Java调用C/C++的开发库的几种常见手段梳理_java 调用c++ jnative 官网不更新-CSDN博客
【不好意思,麻烦你关注我啦,争取早日做个有用干货文主】