java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader

我尝试实现 Android-FFmpeg-Images-Video android studio 项目示例 参考 link

当我尝试 运行 android 应用程序时,这里会报错

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime. IncrementalClassLoader$DelegateClassLoader nativeLibraryDirectories=[/data/data/com.catcry.ffmpeg/lib, /vendor/lib,/system/lib]]] couldn't find "libffmpeg-jni.so"

static {
    System.loadLibrary("ffmpeg");
    System.loadLibrary("ffmpeg-jni");
}

这是我的build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.example.ffmpeg"
    minSdkVersion 14
    targetSdkVersion 23
    multiDexEnabled true
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
sourceSets {
    main {
        res.srcDirs = ['src/main/res']
        jniLibs.srcDirs = ['src/main/jniLibs']
        jni.srcDirs = [] // This prevents the auto generation of Android.mk
    }
}
}

dependencies {
compile 'com.android.support:support-v4:23.0.0'
compile project(':ffmpeg4android_os')
compile 'com.android.support:multidex:1.0.1'
}

这是我的目录结构

UnsatisfiedLinkError 是由于您的 android 项目中缺少 libffmpeg-jni.so 文件。请尝试正确的库。

只需从 Setting/Preferences -> Build,Execution,Deployment -> Instant 运行 关闭 instant-运行 并取消选中前两个复选框。这个错误是因为 instant-运行 特性。

您的代码

sourceSets {
    main {
        res.srcDirs = ['src/main/res']

        jni.srcDirs = [] // This prevents the auto generation of Android.mk
    }
}

与您的文件夹结构不符。 将 'jniLibs' 放在 'src/main' 文件夹下。

您可以查看此 SO post 了解文件夹结构。

我遇到了同样的问题。我通过创建如下图所示的文件夹结构来解决它。

将您的 .so 个文件复制到 armeabi-v7a

这是android视图>