报错java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/cn.*****/lib/arm64/libGlobal.so" is 3

这个错误信息在一个项目中引入高德地图、百度地图、Jpush、Ping++、二维码扫描Qrcode等三方架包时应该会遇到下面这个报错信息:

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/cn.********-1/lib/arm64/libGlobal.so" is 32-bit instead of 64-bit

错误信息说在工程中找不到64位的so文件,32位的不能代替。遇到这个问题应该就不知所措了,明明都是按照三方文档上的步骤导入的,怎么还会有报错,这个问题出现的原因就是有些三方的架包只提供了32的so文件,而没有提供64位的so文件。说到这,首先想到的办法就是从网上在下载个64位的so文件不就完了,问题就来了,有些网上找的64位的不一定是三方官方提供的,那么就不能去使用和兼容。之前我就遇到过使用高德地图和二维码扫描Qrcode造成的冲突,Qrcode是一个module做为app工程的library,因为高德地图必须要在armeabi-v7a文件夹下放置so文件,而做为library的Qrcode则同样也需要armeabi-v7a不然编译报错,但恰巧Qrcode只有32位的,这样就尴尬了,后来查询了资料终于解决了这个问题,

1.就是在自己工程app目录下build.gradle加上一句话:


这句话意思是只加载32位的so文件,那么如果是64位系统的手机肯定也是可以兼容的。

2.这时如果还是有报错,可能是因为gradle的配置中,并不知道是否要做操作系统的兼容,这时只要在gradle.properties文件中加上Android.useDeprecatedNdk=true;这样就搞定了。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值