大家好,我的应用程序中有aac解码器
当我在API级别22时,它工作得很好。
但是当我使用API级别23时...我的应用程序崩溃并且给我一个无法解析文件的错误
java.lang.UnsatisfiedLinkError: dlopen failed:
我搜索了很多页面,但没有任何帮助。 问题只出现在最新版本的android ..应用程序在旧版本的android中运行得很好..
这是我的libs
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中加载lib
我也试过
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");
但nothings有效:(
提前谢谢..我在等待
答案 0 :(得分:0)
我已针对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()