解决 .so文件64与32不兼容问题

时间:2022-05-09 14:04:56

http://blog.csdn.net/vhawk/article/details/49964475

2016-11-25 19:39 5416人阅读 评论(13) 收藏 举报

版权声明:本文为博主原创文章,未经博主允许不得转载。

猴子在调用高德地图的时候,遇到一个操作系统兼容问题,异常堆栈说是找不到so库文件,猴子就不懂了,明明有他说的那个文件。

后来和同行交流,他们的jniLibs中有一个arm64-v8a的文件夹用来存放64位操作系统的so库文件,于是猴子自己建了一个arm64-v8a文件夹,因为高德并没有把64位的so库文件公布出来,所以,猴子直接把他们唯一的so库考到了arm64-v8a文件夹下。自以为这下就该好了,于是等待见证奇迹。奇迹果然发生了,爆出了那个so库是32位而非64位的异常。猴子果断蒙圈了。下载了高德的demo,看到她们的demo里面也只有armeabi这一个库文件夹。这让猴子感觉到,64位的操作系统可以兼容32位的库文件。于是多方查找资料。终于在一家英文网站上找到了答案。

解决方案也很简单,在build.gradle中加上,这句话的意思大概就是,告诉程序加载如下的so文件

Android.useDeprecatedNdk=true

就可以了。

运行,终于能奇迹般地运行起来了。

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.lvshandian.partylive-1/lib/arm/libutility.so: has text relocations

解决办法:修改targetSdkVersion 至22