当前位置:   article > 正文

关于移动设备架构和SO兼容的相关_so库x86和arm

so库x86和arm

主流 CPU 架构

主流 CPU 架构大致分为两种

arm 架构

英国 ARM 公司开发的一种 CPU 架构,特点是低功耗,主要应用在移动设备领域

arm 处理器分为以下三种:

armeabi:第 5 代、第 6 代基于 32 位的处理器,简称 arm,早期的 Android 手机用得比较多,现在已经被淘汰

armeabi-v7a:第 7 代基于 32 位处理器,简称 v7,目前低端的 Android 设备用得比较多,现在占有率比较低

arm64-v8a:第 8 代基于 64 位处理器,简称 v8,目前高端的 Android 设备用得比较多,是目前最主流的处理器

x86 架构

美国因特尔公司开发的一种 CPU 架构,特点是高性能,主要应用在 PC 设备领域

x86 处理器分为以下三种:

这两种处理器早期的 Android 平板用得比较多,现在已经被淘汰,现在的 Android 平板用的都是 arm 的处理器

x86:基于 32 位处理器

x86_64:新一代基于 64 位处理器,兼容 32 位应用程序

关于SO库

关于 so 兼容性

有着向下兼容属性,新一代的处理器兼容旧一代的 so 库,但是旧一代的处理器不兼容新一代的 so 库。arm 的处理器无法兼容 x86 架构的 so 库,而大多数 x86 的处理器却可以兼容 arm 的部分架构(armeabi、armeabi-v7a)

关于 so 加载策略

根据向下兼容的策略,arm64-v8a 的设备会优先从 arm64-v8a 目录获取,如果 arm64-v8a 目录不存在就从 armeabi-v7a 目录获取,如果 armeabi-v7a 目录不存在就从 armeabi 目录获取,如果还是不存在会直接抛出异常。还有一种特殊的情况需要我们留意,如果我们的 apk 包中有某种架构的 so 目录,系统就认为应用适配了这种 CPU 架构,会直接从对应的 so 目录中读取 so 文件,如果这个文件不存在会直接抛出异常,所以要保证不同 so 目录的文件数量要保持一致。

关于 so 过滤

由于 x86 架构在 Android 设备占有率极低,所以现在只考虑 arm 架构。arm64-v8a 是目前主流设备的处理器,但是还有部分 armeabi-v7a 处理器的设备,从兼容性上考虑,arm64-v8a 的设备兼容 armeabi-v7a 的 so 库,但是 armeabi-v7a 的设备无法兼容 arm64-v8a 的 so 库,所以建议同时保留 armeabi-v7a 和 arm64-v8a 的 so 库,如果对设备的覆盖率要求极高的情况下,建议只保留 armeabi 和 arm64-v8a 的 so 库。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/73577
推荐阅读
相关标签
  

闽ICP备14008679号