首先:
遇到這個問題首先是去libs目錄確認是否有對應的so文件,然后再確認build.gradle里面是否添加了
jniLibs.srcDirs = ['libs','compilelibs']。
然后(關(guān)鍵):
在android studio上主工程A 通過compile方式添加了第三方j(luò)ira包B,B里面引入了其他的CPU架構(gòu)目錄,也會導致報上面的錯;
比如:主工程A的libs下原來只有armeabi-v7a,但是引入了第三方j(luò)iar包B,B里面包含了arm64-v8a的目錄,這樣會導致主工程運行的時候報錯。
檢查方法:打開APK文件,查看libs文件夾下的目錄結(jié)構(gòu)是否和主工程里面的libs文件夾不一樣。
解決方法:在根據(jù)自己項目的支持情況下,
刪除引用第三方sdk的library項目中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庫
tasks.getByName('prepareDebugDependencies') {
it.doLast {
deleteSO()
}
}
// 打包的時候刪除SO庫 tasks.getByName('prepareReleaseDependencies') {
it.doLast {
deleteSO()
}
}
}