报错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加上一句话:

报错java.lang.UnsatisfiedLinkError: dlopen failed:

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

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



你可能感兴趣的:(报错java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/cn.*****/lib/arm64/libGlobal.so" is 3)