Android 未满足的linkerror nativeLibraryDirectories=[/vendor/lib64,/system/lib64
情况如下: 我有一个64位apk,它应该是来自Android 未满足的linkerror nativeLibraryDirectories=[/vendor/lib64,/system/lib64,android,shared-libraries,loadlibrary,Android,Shared Libraries,Loadlibrary,情况如下: 我有一个64位apk,它应该是来自/system/lib的32位共享对象(.so文件)。但apk在运行时崩溃并报告: UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64, /system/lib64 我认为它试图从/system/lib64中搜索位于/system/lib中的.so文件,然后发生错误 我如何让它从/system/lib而不是/system/lib64进行搜索?如果您只有x86和armeabi-v7
/system/lib
的32位共享对象(.so文件)。但apk在运行时崩溃并报告:
UnsatisfiedLinkError nativeLibraryDirectories=[/vendor/lib64, /system/lib64
我认为它试图从/system/lib64中搜索位于/system/lib
中的.so文件,然后发生错误
我如何让它从
/system/lib
而不是/system/lib64
进行搜索?如果您只有x86和armeabi-v7a库,您的应用程序应该自动以“32位模式”安装
尝试在gradle文件中使用此选项:
安卓{
....
默认配置{
....
ndk{
abiFilters“armeabi-v7a”、“x86”
}
}
}之所以会发生这种情况,是因为您正在绑定至少一个64位本机库。Android检测到这种情况,并决定在仅64位的位置查找其余的.so文件。它找不到这些文件,因为您仅为32位体系结构构建 要验证这是否是您的问题,请打开构建的apk并查看“lib”目录。其中的每个子目录都代表一个本机二进制体系结构。如果您没有构建该体系结构的所有本机.so文件,则该目录不应存在。找出原因并停止它 其中一个例子是Crashlytics,它可以悄悄地捆绑自己。导致的崩溃只出现在64位设备上,因为32位设备从不搜索64位体系结构目录
您必须从所有第三方中间件中删除不完全支持的体系结构。32位。因此,即使您的apk可以找到正确的so文件,文件也不能用作64位。@Jiang YD。我在我的apk的Android.mk中使用LOCAL_MULTILIB:=32将apk构建为32位。但它不起作用。它仍然从/system/lib64进行搜索。log仍然说“/system/lib”在.so文件搜索路径中?你找到答案了吗?我面临同样的问题。