UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64,/system/lib64

问题描述 投票:0回答:3

情况如下:

我有一个 64 位 apk,它应该是来自

/system/lib
的 32 位共享对象(.so 文件)。但是apk运行时崩溃并报告:

UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64, /system/lib64

我认为它尝试从 /system/lib64 搜索位于

/system/lib
中的 .so 文件,然后发生错误。

我怎样才能让它从

/system/lib
而不是
/system/lib64
搜索?

android shared-libraries loadlibrary
3个回答
4
投票

发生这种情况是因为您至少捆绑了一个 64 位本机库。 Android 检测到这一点并决定在仅限 64 位的位置查找其余的 .so 文件。 它找不到它们,因为您只针对 32 位架构进行构建。

要验证这是否是您的问题,请打开构建的 apk 并查看“lib”目录。 其中的每个子目录代表一个本机二进制架构。 如果您没有为该架构构建所有本机 .so 文件,则该目录不应该存在。 找出原因并阻止它。

Crashlytics 就是一个例子,它可以悄悄地自我捆绑。 由此产生的崩溃仅出现在 64 位设备上,因为 32 位设备从不搜索 64 位体系结构目录。

您必须从所有第三方中间件中删除不完全支持的架构。


3
投票

如果您只有 x86 和armeabi-v7a 库,您的应用程序应自动以“32 位模式”安装。

尝试在你的 gradle 文件中使用它:

安卓{ .... 默认配置{ .... NDK { abiFilters“armeabi-v7a”,“x86” } } }


-1
投票

Nâng cấp cấu hình hệ tương thì phải làm thế nào...

© www.soinside.com 2019 - 2024. All rights reserved.