关于Android Studio导入第三方.so库,找不到so库以及找不到so库中方法的问题

首先我们谈谈Android Studio在导入第三方的.so文件的方法。
1.首先我们需要把相应的.so文件拷贝到app中的lib文件夹中
image.png

2.在build.gradle中配置下资源信息
image.png

其实还可以用另一种方法,就是在main文件夹中新建资源包,然后将build.gradle配置中做相应的更改也是可以起到相同作用的。
image.png

image.png

我们即使做了如此充分的准备,在编译的时候仍然可能会遇到编译失败的情况,比如显示找不到改so文件,或者在你引入了JNI方法之后显示找不到改JNI方法。
那我们就先谈谈找不到so文件的情况,有人会问我们不是已经导入了so文件么,而且也配置了相应的路径啊。那么问题就来了,为什么会出现这种情况?
原因其实很简单,因为android系统的CPU架构现在有以下七中:ARMv5,ARMv7,x86,MIPS,ARMv8,MIPS64和x86_64。每一种CPU类型都对应一种ABI(Application Binary Interface),“armeabi-v7a”文件夹前面的“armeabi”指的就是ARM这种类型的ABI,后面的“v7a”指的是ARMv7。这7种CPU类型对应的so库文件夹名是:armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。
然而不同的移动设备在运行APP时,是需要加载自己支持的类型的so库,不然就会提示找不到该so库。
image.png

还有就是我们导入了相应的so文件,并且也正确配置了资源引入方法。在初始化的时候我们也通过了,但是我们在使用第三方提供的JNI方法的时候却报错了,显示找不到该方法。这个时候很多人就纳闷了,这是什么鬼?不应该啊,我也遇到过这种情况,而且经常遇到的就是这种找不到方法。因为网上大多数都提示你可能是路径导入不对,或者说是资源引入错误之类的,我可以明确告诉你统统都不是,而是你的so文件跟你的JNI文件所在的包名不一致。
如果你的JNI文件是从官方demo里面拿出来的,那么就在使用它们的so库的同时,需要把JNI文件的路径改成跟demo里面一样的JNI包名路径,而并不能直接放入到自己的项目包名路径中,因为so文件里面是写入了该JNI文件的包名路径,如果路径不一致,在调用方法的时候就会提示找不到方法。
image.png

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值