APP启动时报java.lang.UnsatisfiedLinkError: Couldn't load xxxx.so from loader dalvik.system.PathClassLoad

来源:互联网 发布:白箱用的什么软件 编辑:程序博客网 时间:2024/05/23 19:17
安卓开发中经常会碰到如下这个问题:
APP启动的时候报下面这个错误,导致崩溃:
java.lang.UnsatisfiedLinkError: Couldn't load xxxx.so from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xx.xx.xx-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.xx.xx.xx-2, /vendor/lib, /system/lib]]]: findLibrary returned null
            at java.lang.Runtime.loadLibrary(Runtime.java:358)
            at java.lang.System.loadLibrary(System.java:526)
            .......
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4341)
            at android.app.ActivityThread.access$1500(ActivityThread.java:138)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5016)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
            at dalvik.system.NativeStart.main(Native Method)

问题分析:

这种情况一般都是因为so库没有适配某些CPU类型造成的,比较常用的CPU类型适配一般有如下几种:




问题解决:

一般来说,使用通用的SO库就行,armeabi目录下的SO库就是通用的。
假如你的手机CPU类型刚好是x86 64位的,而此时没有x86_64这个目录,此时就会造成上面的问题。
简单的解决办法就是将通用的SO库,拷贝到x86_64这个目录下就行。
但是,这不是根本的解决办法,通用的SO库在这种情况下运行是并不高效的。所以,根本的解决办法是你必须争对这个CPU类型做适合这个CPU  SO库。
1 0
原创粉丝点击