【问题标题】:Android M API 23 error to load lib .so filesAndroid M API 23 错误加载 lib .so 文件
【发布时间】:2016-04-15 10:46:42
【问题描述】:

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

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

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

java.lang.UnsatisfiedLinkError: dlopen failed:

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

这是我的库

aacdecoder-android-libs-0.8.zip

|---src |---主要 |---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");

但没什么用 :(

提前谢谢你..我正在等待

【问题讨论】:

  • 你找到解决这个问题的方法了吗!!!
  • nope no sol here ..i was using alternative method :)
  • 这有什么更新吗?我只是试图将它用于 api 24,但它仍然因同样的问题而失败。
  • @AmeeT 替代方法是什么?我真的需要让我的应用正常运行
  • 伙计们,我找到了替代方法 .. 试试 EXOPlayer 的伟大作品 :)

标签: android android-studio shared-libraries android-6.0-marshmallow aac


【解决方案1】:

我已经为 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- 将 build 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多