首先贴出错误log:Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.sitech.zjsm-2/base.apk"],nativeLibraryDirectories=[/data/app/com.sitech.zjsm-2/lib/arm, /data/app/com.sitech.zjsm-2/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]] couldn't find "libmupdf_java.so"
分析发现,是我们引入的jar包哄包含有so库(我引用的jar包so库是放在了areambi-v7a下面的),然而我的gradle文件写法确是:
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
mips {
ndk {
abiFilter "mips"
}
}
armv7 {
ndk {
abiFilter "armeabi-v7a"
}
}
arm {
ndk {
abiFilter "armeabi"
}
}
fat
}
所以很容易就可以看出对应的其他类型找不到对应的so库,我们只要修改为:
productFlavors {
armv7 {
ndk {
abiFilter "armeabi-v7a"
}
}
}
就可以顺利运行了!!
补充一下另一个小问题,混淆问题:引入aar时,一定看清楚他们需不需要混淆,如果他们不需要混淆,但是我们的代码需要混淆,那一定要进行过滤!!!
本文详细解析了在Android开发中遇到的Native库加载失败问题,特别是找不到特定.so文件的情况。通过调整Gradle配置,正确指定ABI过滤器,解决了因不同架构下缺少对应so库导致的运行时错误。同时,提醒开发者注意混淆设置,确保第三方库正常工作。
968

被折叠的 条评论
为什么被折叠?



