gpt4 book ai didi

android - armeabi 和 armeabi-v7a 文件夹

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:06 26 4
gpt4 key购买 nike

我正在开发一个 Android 项目,我正在使用 NDK 调用本地方法。我有两个库(.so 文件),一个位于 libs/armeabi 文件夹中,另一个位于 libs/armeabi-v7a lib 文件夹中。

如果我尝试运行该应用程序,它不会加载 /libs/armeabi 文件夹中的库。如果我将库文件移动到 libs/armeabi-v7a 文件夹,它会加载库,但在 5 到 10 分钟后它会崩溃并给出段错误。

我想知道库的位置(不同的文件夹)是否会导致此问题。

最佳答案

安装应用程序时,包管理器服务将扫描 .apk 并查找以下形式的任何共享库:

     lib/<primary-abi>/lib<name>.so

如果找到,则将其复制到 $APPDIR/lib/lib.so 下,其中 $APPDIR 对应于应用程序的特定数据目录。

如果没有找到,并且定义了辅助 ABI,则该服务将扫描以下形式的共享库:

    lib/<secondary-abi>/lib<name>.so

如果找到任何内容,则将其复制到 $APPDIR/lib/lib.so 下。

对于小学/中学的能力,

Android 系统在运行时知道它支持哪些 ABI。更准确地说,最多两个构建特定的系统属性用于指示:

  • 设备的“主要”ABI,对应于系统镜像本身使用的机器代码。

  • 可选的“辅助”ABI,对应于系统镜像也支持的另一个 ABI。

例如,典型的基于 ARMv5TE 的设备只会将主要 ABI 定义为“armeabi”,而不会定义次要 ABI。

另一方面,典型的基于 ARMv7 的设备会将主要 ABI 定义为“armeabi-v7a”,将次要 ABI 定义为“armeabi”,因为它可以运行为它们生成的应用程序 native 二进制文件。

此机制可确保在安装时自动从包中提取适用于目标设备的最佳机器码。

关于android - armeabi 和 armeabi-v7a 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249501/

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