首先:
遇到这个问题首先是去libs目录确认是否有对应的so文件,然后再确认build.gradle里面是否添加了
jniLibs.srcDirs = ['libs','compilelibs']
。
然后(关键):
在android studio上主工程A 通过compile方式添加了第三方jira包B,B里面引入了其他的CPU架构目录,也会导致报上面的错;
比如:主工程A的libs下原来只有armeabi-v7a,但是引入了第三方jiar包B,B里面包含了arm64-v8a的目录,这样会导致主工程运行的时候报错。
检查方法:打开APK文件,查看libs文件夹下的目录结构是否和主工程里面的libs文件夹不一样。
解决方法:在根据自己项目的支持情况下,
删除引用第三方sdk的library项目中libs文件夹的arm64-v8a文件,在build.gradle文件里面添加如下代码:
def deleteSO() {
def rootPath = rootProject.getRootDir().getAbsolutePath()
delete fileTree(dir: rootPath + "/app/build/intermediates/exploded-aar/com.netease.nis.plugin/bugrpt/" + "3.7" + "/jni/", excludes: ['**/armeabi-v7a/**', '**/armeabi/**'])
}
project.afterEvaluate{
// debug模式下删除SO库
tasks.getByName('prepareDebugDependencies') {
it.doLast {
deleteSO()
}
}
// 打包的时候删除SO库 tasks.getByName('prepareReleaseDependencies') {
it.doLast {
deleteSO()
}
}
}