关于移动设备架构和SO兼容的相关

主流 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 库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值