http://blog.csdn.net/vhawk/article/details/49964475
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
猴子在調用高德地圖的時候,遇到一個操作系統兼容問題,異常堆棧說是找不到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