java.lang.UnsatisfiedLinkError异常

显然,这是由于读取不到so文件导致的异常。

我尝试了如下方法: 
1.检查了jniLibs目录下的文件结构和so文件,都稳稳的躺在那儿; 
 
2.试图使用如下方式重新指定目录,依然无果

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
}

3.请教提供so文件的开发同学是否与targetSdkVersion等有关系,并且试图配置了和他们一样的version 
4.Clean Project 和 Rebuild Project 
5.反编译查看apk中的libs目录下确实也存在so文件

然而,并无卵用!

奇怪的是这个异常在真机(OnePlus2,HUAWEI MATE8)上有,而在模拟器上却安然无恙。 
于是乎,查看到OnePlus2的CPU架构是CPU_ABI=arm64-v8a。 
翻阅到一篇相关文章描述到:

对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹: 
如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常 
如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常

如上图1,本地库不存在arm64-v8a文件夹,反编译apk后发现确实存在此目录,显然是由于其他aar的引入会生成此目录存放相关so文件。 
过滤掉此目录

defaultConfig {
        //省略其余配置
        ndk {
            //这句话的意思是指定ndk需要兼容的架构,其余文件夹so文件全部过滤掉
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }

这么个问题,两天的光景没了!蓝瘦,香菇。

关于abiFilters的使用

时间: 2024-10-22 07:09:45

java.lang.UnsatisfiedLinkError异常的相关文章

我在使用System.load(path);报了一个异常java.lang.UnsatisfiedLinkError

问题描述 我在使用System.load(path);报了一个异常java.lang.UnsatisfiedLinkError: Can't load library:+ pathpath 为D:/Program Files/Apache Software Foundation/Tomca 6.0/webapps/o3shoe/WEB-INF/SentinelKeysJDK.dll,但是该目录下又存在这个SentinelKeysJDK.dll文件 问题补充:这个文件是获取加密狗信息使用的,在ma

java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av from loader dalvik.system.PathClassLoader

android studio引入第三方库时报如下异常. 06-15 16:50:24.477 9497-9497/easemobim.test.com.easemobim E/AndroidRuntime: FATAL EXCEPTION: main java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av from loader dalvik.system.PathClassLoader[dexPath=/data/app/easem

Caused by: java.lang.UnsatisfiedLinkError...问题的解决

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned null 在使用百度地图的时候碰到了这问题 网上搜了下各种方法 都不顶用 我想死的心都有了..有没有碰到过这问 题的 求分享下经验啊. 后来看了百度地图sdk的demo以后,是因为有一个文件 liblocSDK.so,必须放在 libs/armeabi 目录下.将其对应的 liblocSDK.so拷到相

c java jna-window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError:

问题描述 window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError: window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError: Unable to load library 'helloworld.dll: ???????¨,32位win系统好用,请问大侠们有谁遇到过类似的情况,怎么解决,急!!! 解决方案 去掉.dll

java.lang.UnsatisfiedLinkError

问题描述 java.lang.UnsatisfiedLinkError Exception in thread "main" java.lang.UnsatisfiedLinkError: javax.microedition.lcdui.Font.init(III)V at javax.microedition.lcdui.Font.init(Native Method) at javax.microedition.lcdui.Font.(Font.java:198) at java

HashMap中java.lang.NullPointerException异常问题

问题描述 //添加根结点Iterator<String>Iter=resultMap.keySet().iterator();inti=0;while(Iter.hasNext()){i++;System.out.println(i);StringscCode=Iter.next();if(resultMap.get(Iter.next())!=null){StringscParent=resultMap.get(Iter.next()).toString();System.out.print

java.lang.IllegalArgumentException 异常,求大牛说下解决方案

问题描述 java.lang.IllegalArgumentException 异常,求大牛说下解决方案 解决方案 java.lang.IllegalArgumentException的解决方案java.lang.IllegalArgumentException:(读取配置文件异常) 解决方案二: 这是用了spring框架吧,报是非法的参数错误,你看一下配置文件中是否有不存在的类,或者其它地方有不存在的一些类或者其它的内容.还有同样问题的参考:http://bbs.csdn.net/topics

ehcache-EHCache报出java.lang.IllegalMonitorStateException异常

问题描述 EHCache报出java.lang.IllegalMonitorStateException异常 我写的代码如下所示,其中EHCacheService.putIn是封装了EHCache的put函数,key=1,一直key++. import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import j

java.lang.UnsatisfiedLinkError: dlopen failed:unknown reloc type 160

In case you set up your environment with another version of NDK than the recommended one (r9d) and got an error on launching the app: 1 java.lang.UnsatisfiedLinkError: dlopen failed: 2         unknown reloc type 160 You can try modifying the~/Project