【发布时间】:2019-03-13 07:49:16
【问题描述】:
我最近创建并发布了一个 Android 应用程序包,其中包含适用于所有处理器架构的已编译本机库。在大多数设备上,一切都运行正常。但在某些设备上,我可以在 Crashlytics 控制台中看到此错误 致命异常:java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader[DexPathList[[zip 文件“/system/framework/org.apache.http.legacy.boot.jar”,zip 文件“/data/app/com.someapp-wAu5DoLmLvM_RVnbU1qsCg==/base.apk” ],nativeLibraryDirectories=[/data/app/com.someapp-wAu5DoLmLvM_RVnbU1qsCg==/lib/arm64, /system/lib64]]] 找不到“somemylib.so”
我想知道 - 为什么会发生这种情况。我有 x64 处理器的库。这仅在某些设备上发生 - 但这种崩溃是 Crashlytics 中最常见的。 我所有的库都存储在 jniLibs 目录中 这些是我的 build.gradle 中的一些片段
bundle {
density {
// Different APKs are generated for devices with different screen densities; true by default.
enableSplit false
}
abi {
// Different APKs are generated for devices with different CPU architectures; true by default.
enableSplit true
}
language {
// This is disabled so that the App Bundle does NOT split the APK for each language.
// We're gonna use the same APK for all languages.
enableSplit false
}
}
splits {
abi {
enable true
reset()
include 'armeabi', 'mips', 'x86', 'armeabi-v7a', 'arm64-v8a',
'mips64', 'x86_64'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['jniLibs']
}
}
我的应用程序中有一个服务类,它试图在有人启动它时加载本机库。我有时会在操作系统检测到我的应用程序中的本机库之前执行对服务的“开始”调用?但我不认为是这样。 你能帮帮我吗
【问题讨论】:
标签: android c kotlin java-native-interface