Android 引用第三方so文件加载报错

作者:陆金龙    发表时间:2018-10-02 11:30   



问题分析
 

不同CPU架构的Android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找。

如果已经有对应的目录,但是如果没有找到对应的.so文件,也不会去armeabi下去寻找了。 所以需要注意工程配置哪几个so文件目录,需要加载对应的so文件,不然会报错。

如果配置了 ndk {         abiFilters "armeabi", "armeabi-v7a", "x86", "mips"     },而只有armeabi下有so文件,遇到armeabi-v7a平台的手机,没有armeabi-v7a目录下的so文件就会加载报错。

解决方法


1.去掉以下配置,在main文件夹中新建jniLibs资源包
 sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

2.去掉以下配置 ok了。
//        ndk {
//            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
//        }