Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader

世事洞明皆学问,人情练达即文章。这篇文章主要讲述Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader相关的知识,希望能为你提供帮助。
我正在尝试访问一些海康威视闭路电视摄像机。我有so文件和jar文件。当我试图运行该程序时,它说

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/idonic.mobileapp.androidhikvision-1/base.apk"],nativeLibraryDirectories=[/data/app/idonic.mobileapp.androidhikvision-1/lib/arm, /data/app/idonic.mobileapp.androidhikvision-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libMPCtrl.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076) at org.MediaPlayer.PlayM4.Player.< clinit> (Player.java:775) at idonic.mobileapp.androidhikvision.PlayBackByTime$LoadingDevicesTask.doInBackground(PlayBackByTime.java:80) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

我尝试打电话时发生错误
player = Player.getInstance();

这是我程序的当前结构
Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader

文章图片

错误说它找不到某个文件夹中不是我的项目的路径所以我想我错过了一些东西。也许我需要声明so文件所在的新文件夹。
【Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader】这是我的build.gradle
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "idonic.mobileapp.androidhikvision" minSdkVersion 10 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags "-frtti -fexceptions" } } ndk { abiFilters "armeabi", "armeabi-v7a"} } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } externalNativeBuild { cmake { path "CMakeLists.txt" } } sourceSets { main { jniLibs.srcDirs = ['jniLibs'] jni.srcDirs = [] //disable automatic ndk-build } } }dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile files('libs/HCNetSDK.jar') compile files('libs/PlayerSDK.jar') compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }

我正在使用android 6 / MIUI8.5.3.0在xiaomi redmi note 4中进行测试。 gradle版本是2.3,android studio是3.0。我试图在其他设备和Android 5.0设备中加载项目代码工作,我可以看到来自闭路电视摄像机的图像。其他设备和s7与Android 7.1。我错过了什么......先谢谢..
答案使用最新的Android版本> 25后,我遇到了同样的问题。这是我如何解决问题。
  1. 在app / jniLibs下创建三个文件夹 一个。 app / jniLibs / x86 b。 app / jniLibs / armeabi c。应用程序/ jniLibs / armeabi-V7A
如下图所示Add folders
  1. 在rood文件夹下创建一个gradle.properties文件。右键单击文件夹的根目录,即99%app folder> New file> name it gradle.properties
  2. 粘贴以下行 android.useDeprecatedNdk = true- > gradle.properties
  3. 在build.gradle中添加以下行(Module:app)
android{ .... defaultConfig{ ndk { abiFilters "armeabi-v7a", "x86", "armeabi" } .... }

  1. 用手指交叉运行应用程序。

    推荐阅读