android studio 依赖 包.so找不到,AndroidStudio中调用.so包出现找不到.so包的错误

当在Android Studio中遇到.so库找不到的错误时,通常是因为CPU架构不匹配。解决方法包括查看设备架构(通过adb shell命令),确认.so库是否对应正确目录。在项目的gradle.properties中启用废弃的Ndk支持,并在app的build.gradle中设置abiFilters,排除不适用的CPU架构,如添加`abiFilters "armeabi", "armeabi-v7a", "x86", "mips"`。这样可以确保只打包兼容的.so库,从而解决错误。" 111791239,10297149,Django Admin中导出Excel功能实现,"['Django框架', 'Excel导出', '后端开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现原因

RT,在Andoridsutdio中调用.so库出现如现标题所示错误,该怎么解决。首先出现这个错误的原因是因为你的cpu架构是64位的。而你的.so库在编译的时候没有支持64位cpu。** 经@lolstudio 提醒, 如果这个.so的库是你自己弄的,那你重新生成下支持64位cpu的.so库出来就行了,剩下的文字就不用看了,本文适用于你没法对.so做操作的朋友。** 查看cpu架构,可以通过adb shell 命令。进入/system/目录下有一个build.prop文件,这个里面有一行 ro.product.cpu.abi=xx就是你所要的信息,具体命令如下:

adb shell

cd /system

cat build.prop

apk包在安装的时候,系统会把包中与自己的abi对应的lib目录中的so库文件拷贝到system分区中,32位机器中只有一个目录/system/lib,64位机器中有两个目录/system/lib和/system/lib64,app启动进行链接时,64位机器中会先到/system/lib64目录中去找,这时候肯定找不到。如果没有找到再到/system/lib目录中去找。如果你把32位的so库拷贝到了lib64目录中,会导致链接失败,同样,64位的so库被拷贝到lib目录中也会导致失败,所以so库要和目录一一对应。

解决方案

首先我的目录结构是这样的:

format,png

QQ截图20160721123538.png

我的.so并没有放在新建的jniLibs目录中,这个关系应该不大,两种方式都可以。

我的cpu架构是 ro.product.cpu.abi=arm64-v8a

而我的只有一个CPU架构就是armebi-v7a,我们要做的就是阻止生成arm64-v8a;

正常情况打开apk的lib结构如下:

format,png

QQ截图20160721124748.png

方案如下:

首先在project目录下的 gradle.properties中添加一句

android.useDeprecatedNdk=true

在app的build.gradle中的defaulConfig下添加如下:

ndk {

abiFilters “armeabi”, “armeabi-v7a”, “x86”, “mips”

}

这时候你解压开生成的apk包,会发现目录lib结构如下:

format,png

QQ截图20160721124539.png

OK,这样就解决了我的这个问题,网络上有一些别的阻止生成arm64-v8a,但是不好使。

作者:乱逃

链接:https://www.jianshu.com/p/c0cd192d6651

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值