Android M API 23 加载lib .so 文件时出错

Android M API 23 error to load lib .so files

大家好,我的应用程序中有 aac 解码器

当我在 API 22 级时它工作得很好..

但是当我使用 API 级别 23 时..我的应用程序崩溃并给我一个无法 lib 文件的错误

java.lang.UnsatisfiedLinkError: dlopen failed:

我搜索了很多页面,但没有找到任何帮助.. 问题只出现在最新版本的 android .. 应用程序在旧版本的 android 中运行良好 ..

这是我的库

aacdecoder-android-libs-0.8.zip

|---源码 |---主要 |---jniLibs

              > aacdecoder-android-0.8.jar
                > armeabi
                   > libaacdecoder.so
              > armeabi-v7a
                   > libaacdecoder.so
              > mips
                  > libaacdecoder.so
              > x86
                > libaacdecoder.so

如何在最新版本的 android M

中加载库

我也试过

 System.loadLibrary("src/main/amn/armeabi/libaacdecoder.so");
        System.loadLibrary("src/main/amn/armeabi-v7a/libaacdecoder.so");
        System.loadLibrary("src/main/amn/mips/libaacdecoder.so");
        System.loadLibrary("src/main/amn/x86/libaacdecoder.so");
        System.loadLibrary("src/main/amn/aacdecoder-android-0.8.jar");

但没有任何效果:(

提前谢谢你..我等着

我已经为 api 26 解决了这个问题 所以:

1- 您需要实现这个新库: https://github.com/hichemcesar24/AACDecoder

2- 您需要更改 gradle 我正在使用以下代码:

android {
compileSdkVersion 26
buildToolsVersion '26.0.1'

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 1
    versionName "0.8"
    group = 'com.spoledge.aacdecoder'
    version = '0.8-SNAPSHOT'
    ndk { stl "gnustl_static" }
}

sourceSets.main {
    jniLibs.srcDir 'src/main/libs'
    jni.srcDirs = []
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

task ndkBuild(type: Exec) {
   // def ndkDir =plugins.getPlugin('com.android.library').sdkHandler.getNdkFolder()
   def ndkDir = project.android.ndkDirectory.absolutePath


    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        commandLine "$ndkDir/ndk-build.cmd", '-C', file('src/main/jni').absolutePath
    } else {
        commandLine "$ndkDir/ndk-build", '-C', file('src/main/jni').absolutePath
    }
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
}
}

3- 将构建 gradle 的类路径更改为:

 classpath 'com.android.tools.build:gradle:2.2.2'

4- 如果 gradle 有问题所以你需要删除 :

 def ndkDir = project.android.ndkDirectory.absolutePath

并更改为:

 def ndkDir =plugins.getPlugin('com.android.library').sdkHandler.getNdkFolder()