Android Studio-NDK开发(二)调用ndk开发生成的so和jar包

Android Studio-NDK开发(二)调用ndk开发生成的so和jar包


版本说明

版本作者日期备注
0.1loon2020.9.1初稿

目录


基本上分三步:

  • 1、拷贝so;
  • 2、拷贝jar包并导入;
  • 3、添加路径;

1、拷贝so

由于要适应不同abi对应的系统,所以最好在编译时设置好so的abi类型,一般我们设置的avd为x86或者x86_64,真机一般是armv64或者armv7的。

我习惯还是直接拷贝到模块根目录的libs文件夹下面:

在这里插入图片描述

2、拷贝jar包并导入

我这里默认还是放在libs下面,然后右键—>Add As Library:

在这里插入图片描述

等到添加成功后,可以看到对应的Java接口:

在这里插入图片描述

3、添加路径到编译脚本中

这个一般是常见的问题,我们上面添加完jar包和so之后其实已经可以编译了,而且编译时没有上报任何错误,但是运行时常常会闪退或者在调用对应so中的接口后会app闪退,查看logcat会发现未找到对应的库(couldn’t find “libkysdk.so”):

在这里插入图片描述
我这是因为我们添加库的路径不是标准路径,所以我们需要知名库的路径(当然也有可能是其它原因,但这个原因很常见):

在你运行的模块(比如我这里是app模块)的build.gradle里面配置(android节点下,与buildTypes并列)

sourceSets{
    main{
        jniLibs.srcDirs=['libs']
    }
}

如下图所示:

在这里插入图片描述

之后再重新运行就没问题了:

在这里插入图片描述

4、最后

ok,成功打通了生成so、jar以及调用的通路。

由于java传递给c/c++的参数比较多,所以我们打算使用类来传递参数,然后在c++侧使用结构体获取数据,这样native接口不会因为参数个数变化而变化,参数个数由于业务变化后我们只需要更改传递的类的属性个数和构造函数即可,下一次我们就来总结一下如何将java的类传递给c/c++层。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称系统有问题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值