首先:
遇到這個(gè)問(wèn)題首先是去libs目錄確認(rèn)是否有對(duì)應(yīng)的so文件,然后再確認(rèn)build.gradle里面是否添加了
jniLibs.srcDirs = ['libs','compilelibs']
题暖。
然后(關(guān)鍵):
在android studio上主工程A 通過(guò)compile方式添加了第三方j(luò)ira包B置尔,B里面引入了其他的CPU架構(gòu)目錄勇吊,也會(huì)導(dǎo)致報(bào)上面的錯(cuò);
比如:主工程A的libs下原來(lái)只有armeabi-v7a铅匹,但是引入了第三方j(luò)iar包B伏社,B里面包含了arm64-v8a的目錄评矩,這樣會(huì)導(dǎo)致主工程運(yùn)行的時(shí)候報(bào)錯(cuò)叶堆。
檢查方法:打開(kāi)APK文件,查看libs文件夾下的目錄結(jié)構(gòu)是否和主工程里面的libs文件夾不一樣斥杜。
解決方法:在根據(jù)自己項(xiàng)目的支持情況下虱颗,
刪除引用第三方sdk的library項(xiàng)目中l(wèi)ibs文件夾的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庫(kù)
tasks.getByName('prepareDebugDependencies') {
it.doLast {
deleteSO()
}
}
// 打包的時(shí)候刪除SO庫(kù) tasks.getByName('prepareReleaseDependencies') {
it.doLast {
deleteSO()
}
}
}