致命异常:java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader [DexPathList [[zip file“/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp- 1 / lib / arm64,/ vendor / lib64,/ system / lib64]]]找不到“libnative.so”
它只发生在ARM64设备上 . 我没有在我的gradle设置中设置任何自定义NDK构建 .
看起来Android Studio会以某种方式弄乱正确的文件夹以复制.so文件 .
如何发生以及如何解决?
2 回答
基本上我们要做的是,将你的.so文件放在一个名为lib的文件夹中(注意:它不是libs,这不是一个错误) . 它应该在相同的结构中,它应该在APK文件中 .
项目:
| --lib:
| - | --armeabi:
| - | - | - . so文件 .
1)所以我创建了一个lib文件夹,里面有一个armeabi文件夹,我插入了所有需要的.so文件 .
2)然后我将文件夹压缩成.zip(zip文件中的结构现在是lib / armeabi / * .so) .
3)然后,我将.zip文件重命名为armeabi.jar .
4)并且,在gradle的构建文件中将行编译fileTree(dir:'libs',include:'* .jar')添加到依赖项{}中 .
也许你正在使用另一个为arm64-v8a嵌入.so文件的库?打开你的APK作为一个zip文件,并查看
lib
文件夹,看看是否是这种情况 .然后,要解决您的问题,您可以使用
abiFilters
仅为您完全支持的体系结构包含.so文件: