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

时间:2016-03-04 09:33:01

标签: android ffmpeg java-native-interface

我曾试图实现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]]]找不到“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'
}

这是我的目录结构

Dir

4 个答案:

答案 0 :(得分:9)

只需关闭设置/偏好设置中的即时游戏 - >构建,执行,部署 - >即时运行 并取消选中前两个复选框。此错误是由于即时运行功能。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您的代码

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

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

与您的文件夹结构不对应。 把' jniLibs'在&s; src / main'文件夹中。

您可以查看此SO帖子了解文件夹结构。 jniLibs are not extended in gradle

答案 3 :(得分:0)

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

.so个文件复制到armeabi-v7a

https://graph.windows.net/"YourTenantId"/$metadata#directoryObjects/Microsoft.DirectoryServices.User

这是android视图>

this is project view