情况如下:
我有一个 64 位 apk,它应该是来自 /system/lib
的 32 位共享对象(.so 文件)。但是apk运行时崩溃,报:
UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64, /system/lib64
我认为它试图从/system/lib64 搜索我位于 /system/lib
中的 .so 文件,然后发生错误。
如何让它从 /system/lib
而不是 /system/lib64
搜索?
最佳答案
发生这种情况是因为您 bundle 了至少一个 64 位 native 库。 Android 检测到这一点并决定在仅限 64 位的位置寻找其余的 .so 文件。它找不到它们,因为您只为 32 位架构构建。
要验证这是您的问题,请打开构建的 apk 并查看“lib”目录。其中的每个子目录代表一个本地二进制架构。如果您没有为该体系结构构建所有 native .so 文件,则该目录不应该存在。找出原因并阻止它。
这方面的一个例子是 Crashlytics,它可以悄悄地 self bundle 。导致的崩溃只出现在 64 位设备上,因为 32 位设备从不搜索 64 位架构目录。
您必须从所有第三方中间件中删除您不完全支持的架构。
关于android - UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64,/system/lib64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474073/