【发布时间】:2019-11-27 12:46:52
【问题描述】:
在我的应用中,我使用 Android NDK 为 armeabi-v7a、arm64-v8a、x86 和 x86_64 ABI 构建库。 我正在将库作为捆绑包上传到 Google Play。
在某些设备上我收到以下错误
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/my-package-name-1/base.apk"],nativeLibraryDirectories=[/data/app/my.package.name-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libc++_shared.so"
我检查了上传包的内容,它肯定包含上述 ABI 的 libc++_shared.so。
搜索到的目录好像不对"../lib/arm"。我没有添加对过时 ABI(mips,armeabi)的支持,但我不记得有什么叫 "arm"。
我该如何解决这个问题?
更新: 在 gradle 文件中明确指定支持的 ABI 没有帮助。在将它上传到播放商店之前,我再次检查了 libc++_shared.so 是否存在于捆绑文件中(对于每个 ABI),并且再次没有文件丢失。
我注意到的另一个奇怪的事情是每个用户(+10/用户)有很多崩溃。我觉得这有点奇怪,因为没有库,应用程序无法工作(甚至无法启动)。如果我启动的应用程序立即崩溃或根本无法运行,我可能会在第一次尝试失败后将其卸载。
谢谢
【问题讨论】:
-
这可能与stackoverflow.com/questions/56982270/… 有关。尝试做 adb shell 和 dumpsys 软件包 | grep your_package_name 并检查您的 legacyNativeLibraryDir/CPU_ARCH 是什么。
-
legacyNativeLibraryDir 只是以 /lib 结尾,这似乎是正确的。无论如何,它不会在我的设备上崩溃。仅在我无权访问的设备上。
-
@roman 你找到合适的解决方案了吗?
标签: android android-ndk unsatisfiedlinkerror