关于Android调用JNI出现的 java.lang.UnsatisfiedLinkError

来源:互联网 发布:淘宝66大促 编辑:程序博客网 时间:2024/05/22 07:41

关于Android调用JNI出现的 java.lang.UnsatisfiedLinkError

java.lang.UnsatisfiedLinkErrorcom.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader......

最近在项目中突然出现了这种问题,fatal error,没有定位到程序中的具体位置。初步了解下是instant run的问题,然后在settting中把AndroidStudio的Instant run关闭,可以定位到程序中的异常了。
然后发现是找不到对应的so包,当时使用骁龙820手机调试的,arm64架构的确没有对应的so包,但是我们知道arm64和x86找不到对应的动态链接库的时候,是兼容armeabi-v7中是so包的,除非arm64_v8a包中也有so包,但是不全,可能导致这种问题。但是arm64-v8a中是没有so包的,怀疑是编译打包的时候创建了so包。下一步换了骁龙615的手机调试,发现一切正常。这时候基本上确认问题 了。拿打包好的apk解压,发现果然在编译的时候创建了部分,arm64的so包。然后在gradle中添加abiFilter就好了,只要armeabi就行了,现在市面上绝大多数app为了节省空间,都是只编译armeabi_v7包。

defaultConfig {        .......        ndk {            abiFilters "armeabi-v7a"        }    }
0 0