Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 导入包含.so文件的aar库后出现不满意的链接错误_Android_Java Native Interface_Aar - Fatal编程技术网

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

Android 导入包含.so文件的aar库后出现不满意的链接错误,android,java-native-interface,aar,Android,Java Native Interface,Aar,我试图向我的应用程序添加一些新功能,所以我导入了一个aar库,其中包含一个.so文件。但是在导入之后,我的应用程序每次都会因为java.lang.UnsatifiedLinkError而崩溃。在我的应用程序的lib dir(/data/app/my.package/lib/arm)中找不到所有本机lib。如果我不导入aar库,一切都很好。我该怎么做才能使它正确?谢谢。我遇到了同样的问题!我可以用我的方式告诉你如何解决这个问题。 您的aar库必须是AndroidStudio库项目。 使用代码将其导

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

我遇到了同样的问题!我可以用我的方式告诉你如何解决这个问题。 您的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是正确的!你可以从中看到这一点


我希望这对你有帮助

首先,检查您使用的设备架构是否正确


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

原因仍然未知,但我通过在应用程序mudule的build.gradle中添加以下代码修复了此问题:

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