不满意链接错误 导入包含 .so 文件的 aar 库后



我试图为我的应用程序添加一些新功能,所以我导入了一个包含 a.so 文件的 aar 库。但是导入后,我的应用程序每次都因为java.lang.UnsatisfiedLinkError而崩溃。在我的应用程序的 lib dir(/data/app/my.package/lib/arm) 中找不到所有原生库。如果我不导入 AAR 库,一切都很好。我应该怎么做才能使它正确?谢谢。

首先,检查是否为设备使用了正确的体系结构。

如果您已经这样做了,那么体系结构之间一定存在一些不兼容。例如,在我的情况下,我有一个只有armeabi arch的库,另一个库有armeabi和armeabi-v7。当我删除最后一个库的armeabi-v7时,一切正常。

原因仍然未知,但我通过在应用程序 mudule 的 build.gradle 中添加这些代码来解决此问题:

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

我遇到了同样的问题!我可以告诉你如何以我的方式解决这个问题。您的 aar 库必须是 AndroidStudio 库项目。使用代码将其导入应用。库中的 build.gradle 项目必须声明 .so 文件路径。

sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }
}

确保 jniLibs.srcDirs 是正确的!你可以在我的博客中看到这个

希望对您有所帮助!

最新更新