解决UnsatisfiedLinkError: dalvik.system.PathClassLoader

首先:

遇到这个问题首先是去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()   
    }   
  }
}

你可能感兴趣的:(解决UnsatisfiedLinkError: dalvik.system.PathClassLoader)