【问题标题】:UnsatisfiedLinkError couldn't find "libnative-lib.so" with libnative-lib.so visible in aar fileUnsatisfiedLinkError 找不到“libnative-lib.so”,而 libnative-lib.so 在 aar 文件中可见
【发布时间】:2018-03-15 22:18:21
【问题描述】:

所以我构建了一个包含本机库 (libnative-lib.so) 的 Android aar 库。出于向后兼容性考虑,它仅针对 armeabi 和 x86 架构构建。

现在,我将 aar 文件放在我的“客户端”应用程序中并使用它,我可以清楚地看到 libnative-lib.so 位于 aar 的 jni/armeabi 和 jni/x86 文件夹下。

但应用程序崩溃并显示此消息:

java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] couldn't find "libnative-lib.so"

这看起来客户端应用程序无法从 aar 找到 nativelib。有什么建议吗?

【问题讨论】:

    标签: android-ndk aar


    【解决方案1】:

    实际上在我的情况下,由于提到的向后兼容性考虑,我需要将它放在我的库的 build.gradle 中:

    packagingOptions {
        exclude 'lib/armeabi-v7a/libnative-lib.so'
        exclude 'lib/x86_64/libnative-lib.so'
    }
    

    保护构建远离不需要的架构。

    【讨论】:

    • 这将导致 UnsatisfiedLinkError 在几乎所有设备中都找不到“libnative-lib.so”错误
    • @CésarCruz 如果你把两条线都放了,可能。但是当我发布问题时,这个解决方案非常有用,当时仍然支持 armeabi 和 X86
    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多