android开发002-JNA调库demo总集(java层调用底层C/C++/其他语言库)【实践】

本文详细指导如何在Android项目中使用JNA库,包括下载必要的jar文件,创建并配置NativeC++工程,以及在Java层调用C++函数。作者分享了具体步骤和示例,适用于AndroidStudio和JDK1.8的开发环境。
摘要由CSDN通过智能技术生成

【手把手教程JNA_demo所有步骤】

1.生成JAVA层使用的库

jna-5.14.0.jar

android-x86-64.jar

这两个是必选项,因为是个封装好了的中间库,直接到官网下载即可(外网,pa下载快)

https://github.com/java-native-access/jna/releases

2.需要使用的资源

我前期写demo的时候参考了以下网友的例子,我觉得并不完美,自取斟酌

2.1在Android中使用JNA 例子

比较老,但是代码截图是没有问题的

在Android中使用JNA - 简书

2.2 github上的jna例子

完整,但是要移植到自己的环境中比较麻烦

GitHub - dragonforgithub/JnaDemo

其中作者对自己的源码的博文在此,挺细的

https://www.cnblogs.com/blogs-of-lxl/p/11013139.html

3.demo的环境

androidstudio17.0.9

JDK1.8

gradle 6.7.1

jna-5.14.0.jar

android-x86-64.jar

4.demo实践开始的步骤
4.1 数据类型

java-C++(从java层往下C++传的时候:java-byte[] 对应 C++-int8_t* )

4.2创建工程,生成 安卓.so库
4.2.1 创建Native C++安卓工程

4.2.2 导入自己的C++源文件,并在cmakelist上构建将你的源文件编译成动态库

androidstudio build成功的时候会有生成路径的提示,没有的话,自己找,每个androidstudio不太一样

4.3创建工程,jna 使用上面步骤生成的so库
4.3.1创建empty activity安卓工程

 

如果这个工程不可用,就创建empty views activity

4.3.2导入两个jar包

根据图上路径放包

jna.jar包不需要解压

x86_64是android-x86-64.jar包解压号的文件夹,自己下载对应平台包解压后放在这个路径下,但是要记得文件夹是否要修改成对应名字(安卓工程会按路径去读对应平台的包)

要添加依赖项,以及Libs路径

4.3.3 编写java层调用C++层方法

调用代码: 
JNATest.INSTANCE.myFunction(datatest,testValue);
public interface JNATest extends Library {
    NativeLibrary library = NativeLibrary.getInstance("wxxxx");
    JNATest INSTANCE = (JNATest) Native.load(library.getName(), JNATest.class);

    public void myFunction(byte[] data,int test);
    public void myFreeTest();
}

最后点击调试,就可以看到自己加的日志啦

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

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值