Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader

标签 android android-ndk

我正在尝试访问一些海康威视闭路电视摄像机。 我有 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();

这是我程序的当前结构

Current structure

错误说它无法在不是我的项目的某个文件夹中找到路径,所以我想我遗漏了一些东西。 也许我需要声明 so 文件所在的新文件夹。

这是我的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下创建三个文件夹

    一个。应用程序/jniLibs/x86 b.应用程序/jniLibs/armeabi C。应用程序/jniLibs/armeabi-v7a

如下图所示 Add folders

  1. 在 rood 文件夹下创建一个 gradle.properties 文件。右键单击文件夹的根目录,这将是 99% app 文件夹 > 新建文件 > 将其命名为 gradle.properties

  2. 粘贴以下行

    android.useDeprecatedNdk=true -> gradle.properties

  3. 在 build.gradle(Module: app) 中添加以下行

android{
 ....
defaultConfig{
    ndk {
        abiFilters "armeabi-v7a", "x86", "armeabi"
    }
 ....
}
  1. 请运行该应用程序。

关于Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283703/

相关文章:

android - mediaNdk 未定义对 'AMediaCodec_signalEndOfInputStream' 的引用

Android Studio App only Debug模式

android - Intent 不触发

android - 我如何通过 Android 中的 RatingBar 对 Android 应用程序进行评分

java - 如何在android中制作卡片式菜单

android - 移动横向模式下 div 高度 100%?

android - 我们可以在android NDK代码中使用系统IPC吗

android - x264 构建错误 - Android

android - 如何为您的 android 设置找到 ndk 修订号

android - Android NDK:断言失败:LOCAL_MAKEFILE未定义