gpt4 book ai didi

Android 5.1 加载 64 位共享库失败,因为它的依赖库没有找到,但它确实存在

转载 作者:行者123 更新时间:2023-11-29 01:29:39 25 4
gpt4 key购买 nike

我遇到一个 android 5.1 64 位共享库加载问题。

系统:android 5.1。

我的apk将两个xx.so(libA.so & libB.so,libB.so depends on libA.so)压缩成一个原始文件来限制apk文件的大小,当启动时,应用程序将这个原始文件解压缩回原始文件libA.so 和 libB.so 到目录/data/data/MyApp/files/arm64-v8a ,现在应用程序通过传递绝对路径调用 System.load:

System.load("/data/data/MyApp/files/arm64-v8a/libA.so"); //Success
System.load("/data/data/MyApp/files/arm64-v8a/libB.so"); //Fail

如上评论,第一次加载libA.so成功,但加载libB.so失败,错误信息如下: dlopen("/data/data/MyApp/files/arm64-v8a/libB.so", RTLD_LAZY) 失败:dlopen 失败:找不到库“libA.so”。但是/data/data/MyApp/files/arm64-v8a/libA.so 确实存在,可能不在正确的位置?

我测试过32位版本,不存在这个问题。我也在另一台Android5.0系统的Sumsumg Galaxy S6上测试过,也不存在这个问题。

我试过将 libA.so 复制到/data/data/MyApp/lib,但出现权限拒绝错误。

有没有人遇到同样的问题或有解决这个问题的想法?

最佳答案

我在 64 位 LG G Flex 2 @ Android 5.0 上遇到了同样的问题。我猜这是另一个 Android 操作系统错误(gdb 显示 solist 数组可能在链接器中损坏),您可能需要使用 rpath ELF 属性作为解决方法(每当您将库移动到一个新的地方)。我建议您使用 loooooong rpath 重新编译您的库,以使修补更容易。您也可以尝试将 rpath 设置为“/data/data/MyApp/files/arm64-v8a/”

关于Android 5.1 加载 64 位共享库失败,因为它的依赖库没有找到,但它确实存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com