Android 使用so库的遇到的坑

做Android开发会遇到各种各样的问题,遇到问题不可怕,解决了并且知道为什么,下次遇到能马上解决就好了,今天要说的就是这个so库的使用采坑了。

通常在使用一些第三方的SDK时会有一些so库需要你放入到项目中,这里分为两步,其实,第一步放入,第二步使用。两步都有坑,幸运的是我都踩到了,所以记录一下:

常规的so库是使用C或者C++写的,Android中只要调用就好了,而这些依赖库通常的有好几个版本文件,比如我们来看看百度的文字识别SDK,如下图所示。

在这里插入图片描述

上面有四个文件夹arm64-v8aarmeabiarmeabi-v7ax86,这四个文件表示不同的so库的版本,基本可以满足现在的Android智能机,但是不一定支持虚拟设备,所以当你涉及到使用第三方SDK时,首先就是要使用真机,别用虚拟机,做人不要太头铁了,出问题难受的是你自己。

下面的jar包,就是常规的Java架包,里面封装了一些方法,当你的项目加载这个架包之后,你就可以调用它里面的方法。如何判断这个jar有没有加载到你的项目呢?

就看这个架包能不能展开,如下图所示:

在这里插入图片描述

当然也有人是jar包能展开了,但是项目中还是调用不了方法,这个时候,你关掉Android Studio 泡杯茶,然后看看窗外的风景,再打开Android Studio,它就好了。

在这里插入图片描述

再说的通俗一点就是你去网吧打游戏,然后打的开心的时候电脑卡死了,此时你关机重启就好了,是一样的,你目前先这么理解就好了,刨根问题是没有好下场滴?反派死于话多!只有打酱油的能活到大结局。

你可以看到我的jar放在libs下,什么?你说的你的项目中没找到libs文件夹?

在这里插入图片描述

那你把你的工程切换到Project就可以了,你就能找到,找不到就投诉Google,欺骗消费者,虽然你没有花过钱,都是白嫖。

然后把那包含so库的四个文件夹和jar包都放到这个libs下。

一般来说Android默认是读取jniLibs下的文件的,但是这个文件在项目创建时是没有的,需要开发者手动创建。但是你同样可以省略这一步,就放在libs。这样做你就需要在app下的build.gradle中的android{}闭包下,添加这样一段代码:

//改变.so的路径到libs下

sourceSets {

main {

jniLibs.srcDirs = [‘libs’]

}

}

注释都给你写好了,既然你默认读取jniLibs文件,那么我就改了你的默认读取文件夹到libs下,那就可以了,改完之后记得右上角点一下Sync Now。意思是同步配置资源。

配置完这一步,运行项目,然后调用so库中的代码时。

在这里插入图片描述

看到这样的报错,就问你慌不慌?不慌的话你就看不到我这篇文章了,兄嘚!其实上面一堆报错了,最要的就只有一句话:

couldn’t find “libleveldb.so”


你先别管这个libleveldb是什么,你只要知道它现在是一个so库就可以了。刚才我们明明指向了libs文件夹,怎么会找不到这个so库呢?这不是扯呢吗?

其实也很好解决了,so库是属于ndk开发,不同的so库就有不同的配置,因此当你的常规配置解决不了问题的时候,就要尝试新的玩法。

在app模块下的build.gradle中的defaultConfig{}闭包中添加如下代码:

ndk {

abiFilters “armeabi-v7a”, “x86”

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值