我尝试在我的应用中添加一些新功能,所以我导入了一个包含a.so文件的aar库。但导入后,由于java.lang.UnsatisfiedLinkError,我的应用程序每次都崩溃了。在我的应用程序的lib目录(/data/app/my.package/lib/arm)中找不到所有本机库。如果我不进口aar lib,一切都很好。我该怎么做才能做到对?感谢。
答案 0 :(得分:1)
首先,检查您使用的设备是否正确。
如果您已经这样做,那么架构之间肯定存在一些不兼容性。在我的例子中,例如我有一个只有armeabi拱的库,另一个库有armeabi和armeabi-v7。当我删除最后一个库的armeabi-v7时,一切正常。
答案 1 :(得分:1)
原因仍然未知,但我通过在app mudule的build.gradle中添加这些代码来解决这个问题:
android {
......
packagingOptions {
exclude 'lib/armeabi-v7a/libnative.so'
exclude 'lib/x86/libnative.so'
}
}
答案 2 :(得分:0)
我遇到了同样的问题!我可以告诉你如何以我的方式解决这个问题。 您的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正确无误!您可以在my blog
中看到这一点我希望这会对你有所帮助!