android 匹配so文件规则

在对接多个有so文件的第三方sdk时碰到一个问题,在某些手机上会崩溃报错,报错Log显示:无法找到某某**.so文件。

反编译集成的apk文件,发现libs下各架构目录下的so文件并不都相同,有些架构里有的so在其他架构里就没有。

问题就出在这里了,android中,根据cpu架构分七种 "armeabi", "armeabi-v7a","arm64-v8a", "x86", "x86_64", "mips", "mips64",

(如果针对各个架构优化过代码,运行效率会优一些)如果你的手机是arm64的,就会先去找arm64,如果找到了,就读取arm64下的so。如果没有找到,就去找v7a,v7a也没有就去armeabi。因此,我们在适配某一种架构时,要嘛全部提供,要嘛全都不提供,以免报错。

可以使用如下代码控制需要提供的架构目录:

android {
    defaultConfig {
        ndk {
            abiFilters "armeabi"//, "armeabi-v7a","arm64-v8a", "x86", "x86_64", "mips", "mips64"
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值