android开发001-java层调用底层C/C++/其他语言库的方法【理论】

【吐槽】

安卓正因为强大、灵活,导致安卓的各种工具/语法和版本强相关,对于初入门来说,网上各种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博客

【不好意思,麻烦你关注我啦,争取早日做个有用干货文主】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值