• Android java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader......couldn't find "libweibosdkcore.so


    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/***/base.apk"],nativeLibraryDirectories=[/data/app/***/lib/arm64, /data/app/***/base.apk!/lib/arm64-v8a, 
    /vendor/lib64, /system/lib64]]] couldn't find "libweibosdkcore.so"
    at java.lang.Runtime.loadLibrary(Runtime.java:367)
    at java.lang.System.loadLibrary(System.java:1076)
    at com.sina.weibo.sdk.net.HttpManager.(HttpManager.java:83)
    at com.sina.weibo.sdk.net.NetUtils.internalHttpRequest(NetUtils.java:46)
    at com.sina.weibo.sdk.cmd.WbAppActivator.requestCmdInfo(WbAppActivator.java:121)
    at com.sina.weibo.sdk.cmd.WbAppActivator.access$4(WbAppActivator.java:110)
    at com.sina.weibo.sdk.cmd.WbAppActivator$1.run(WbAppActivator.java:80)

    at java.lang.Thread.run(Thread.java:818)

    最近项目中遇到了这个bug,提示在arm64、arm64-v8a下找不到libweibosdkcore.so,因为项目中只适配了"armeabi-v7a", "armeabi", "x86"平台,因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我们只适配了这三个。但是最近后台统计在arm64的机器上,提示libweibosdkcore.so文件找不到,我记得这个应该是向下兼容的,但是出现这种情况很奇怪,于是我就在网上找了找答案。

    解决方法:

    abiFilters
    在自己项目的modle的build.gradle中的defaultConfig里添加上这么一句:

    ndk {
        abiFilters "armeabi-v7a", "armeabi", "x86"  // 指定要ndk需要兼容的架构(这样其他依赖包里arm64,arm64-v8a,arm-v8...之类的so会被过滤掉)
    }
    defaultConfig {
          .....
            ndk {
                abiFilters "armeabi-v7a", "armeabi", "x86" 
            }
    }

    这句话的意思就是指定ndk需要兼容的架构,把除了以上指定的兼容包都过滤掉,只剩下指定的文件夹。用了这个方法之后,确实解决了问题。

    看了下官方文档,文档上是这么说的,可以参考一下

  • 相关阅读:
    Spire.PDF
    C# 下载PDF文件(http与ftp)
    7、软件复用 软件技术系列文章
    15、博客飘叶效果 博客界面改造文章(202211)
    Windows 11 ISO原版镜像文件下载(2022年11月)
    公司管人 我的闪存
    Windows 10 ISO原版镜像文件下载(2022年11月)
    回收站管理器 开源研究系列文章
    2、编码规范 软件技术系列文章
    最值得收藏的 Web 开发资源荟萃
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7656434.html
Copyright © 2020-2023  润新知