我构建了一个基于VLC的播放器,当我想为Android 6.0构建一个版本时,播放器无法在Android 6.0设备上启动。这是日志:无法加载vlcjni库:java.lang.UnsatisfiedLinkError:dlopen失败:/data/app/lib/arm/libvlcjni.so:有文本重定位。 我已经尝试了很多方法来解决它,但我还没有解决它。 我希望有人能告诉我这个问题。
答案 0 :(得分:0)
以下是类似的问题和答案:libavcodec.so: has text relocations
今天,在Nexus 6(Motorola)上使用Android 6.0测试我的应用时,我收到了相同的错误消息。我通过检查清单文件中的targetSDKVersion解决了我的问题。使用“22”而非“23”作为targetSDKVersion解决了它。 (见下文)
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="22" />
我还检查了编译版本和targetSDKversion的build.gradle文件:
compileSdkVersion 22 buildToolsVersion '22.0.1'
defaultConfig { minSdkVersion 15 targetSdkVersion 22 }
希望这会对你有所帮助。但是,现在这只是一个短期的解决方法,我希望我们会从metaio获得一些反馈。
问候,克里斯汀
答案 1 :(得分:0)
我只需要在我的Android库中创建一个libs文件夹,然后将库文件从jniLibs文件夹移动到libs文件夹。我相信这可能与较新版本的Gradle和构建工具有关。这样,您就不必降级构建工具/ Gradle。
更新:
我能够使用以下用于vlc-android的build.gradle脚本构建。我需要以下更新版本。这允许我使用SDK版本24,使用构建工具24和gradle版本2.2.0构建。看看这是否适合你。
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'org.ajoberstar:gradle-git:1.3.2'
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 24
buildToolsVersion '25.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
//noinspection GradleCompatible
compile "com.android.support:support-v4:25.2.0"
compile 'com.android.support:support-annotations:25.2.0'
}