我有一个使用IJKPlayer和ffmpeg*.so库的安卓应用程序。在一个小型测试应用程序中,IJKPlayer库是这样的引用:
apply plugin: 'com.android.library'
android {
// http://tools.android.com/tech-docs/new-build-system/tips
//noinspection GroovyAssignabilityCheck
compileSdkVersion rootProject.ext.compileSdkVersion
//noinspection GroovyAssignabilityCheck
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion 25
targetSdkVersion rootProject.ext.targetSdkVersion
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets.main {
jniLibs.srcDirs 'src/main/libs'
jni.srcDirs = [] // This prevents the auto generation of Android.mk
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
apply from: new File(rootProject.projectDir, "tools/gradle-on-demand.gradle");这在Android Studio 3.2.1上运行得很好。在什么都不做,然后用Android Studio 4.1.2打开项目并构建/运行它之后,应用程序失败并返回错误:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.nvp.test.nvptest-N7MgBlkuRYXx_vQKF6j4jw==/base.apk"],nativeLibraryDirectories=[/data/app/com.nvp.test.nvptest-N7MgBlkuRYXx_vQKF6j4jw==/lib/arm64, /system/lib64, /system/vendor/lib64]]] couldn't find "libijkffmpeg.so"
知道为什么吗?查看错误消息,这些是android搜索库的目录:/lib/arm64, /system/lib64, /system/vendor/lib64吗?
在这种情况下,它一定会失败,因为库存储在/lib/armeabi-v7a下。要让android搜索到这条路,必须做些什么?那么,为什么它要与3.2.1一起工作呢?
欢迎任何提示。
发布于 2021-03-31 19:23:08
我从头开始创建了一个新项目,并将其从android studio 3.2.1迁移到4.1.2。现在它起作用了。因此,这个问题一定隐藏在android版本混乱的某个地方。
https://stackoverflow.com/questions/66854085
复制相似问题