gpt4 book ai didi

android - 为什么我的 Android 应用程序查找/data/app/package_name-1/lib/arm/libLibrary.so 而不是使用文件夹 armeabi

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

我在尝试加载仅为 armeabi 编译的库时在 logcat 中得到这个(假设它是所有 arm* abis 的后备)。

    08-14 09:43:51.516    7486-7486/package_name E/art﹕ dlopen("/data/app/package_name-1/lib/arm/libLibrary.so", RTLD_LAZY) failed: dlopen failed: unknown reloc type 160 @ 0xa3725ab4 (82108)

由于实际限制,我无法在 root 设备上测试它,所以我所知道的是 /data/data/package_name 文件夹有一个符号链接(symbolic link) lib ->/data/app/package_name-1/lib/arm

我知道这不是设备特定的问题,因为我之前在同一设备上使用过 native 库(使用不同的应用程序,但之前的架构相同)。

有人可以帮我吗?真的对到底发生了什么感到困惑。

我使用 gradle build (Android Studio),解压后 libLibrary.so 出现在 apk 的 lib/armeabi 文件夹中。

最佳答案

问题只对了一部分。真正的问题在于重定位类型(我最初并不知道)。

当加载器和目标文件不理解相同的格式时,通常会发生重定位错误。

在这种情况下,.so 文件是使用 c++_static 而不是 gnuSTL_static 构建的。 Android/NDK 提供了大多数 c++11 功能,但其中一些功能并不完全可用,例如 std::to_string 这让我尝试了 c+ +_static.

希望这能帮助那些头上还有头发的人。

关于android - 为什么我的 Android 应用程序查找/data/app/package_name-1/lib/arm/libLibrary.so 而不是使用文件夹 armeabi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32003419/

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