一、安卓CPU架构梳理

Android 目前共支持7种CPU架构:

mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a

  • armeabi:第5代ARM处理器,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢。它能运行在除了mips和mips64的设备上,但在非 armeabi设备上运行性能还是有所损耗;
  • armeabi-v7a:第7代32位ARM处理器,支持硬件浮点运算(支持 armeabi 和 armeabi-v7a,目前大部分手机都是这个架构)
  • arm64-v8a:第8代、64位ARM处理器(支持 armeabi-v7a、armeabi 和 arm64-v8a)
  • X86:电脑、平板CPU架构,因此手机模拟器也通常为X86,设备兼容X86、armeabi
  • x86_64:电脑、平板CPU架构,设备兼容X86_64、X86、armeabi
  • mips、mips64:基本没见过

他们关系用表格表示如下:

Platform 32-bit libraries 64-bit libraries 所属公司
ARM armeabi-v7a arm64-v8a 英国ARM
x86 x86 x86_64 美国Intel
mips mips mips64 美国MIPS

二、单ABI适配方案

ABI:英文Application Binary Interface的缩写,也就是应用二进制接口。不同的CPU 与指令集的每种组合都有 定义的 ABI (应用程序二进制接口),一段程序只有遵循这个接口规范才能在该 CPU 上运行。

目前手机市场上,x86 / x86_64/armeabi/mips / mips6 的架构,基本可以不不考虑了,它们的占有量应很少很少了,arm64-v8a作为最新一代架构,应该是目前的主流,armeabi-v7a只存在少部分老旧手机。

因此我们主要针对armeabi适配,如果你没有模拟器的适配需求的话。

2.1、只适配armeabi

优点:基本上适配了全部CPU架构(除了淘汰的mips和mips_64)
缺点:性能低,相当于在绝大多数手机上都是需要辅助ABI或动态转码来兼容

2.2、只适配 armeabi-v7a

优点:兼容性强,支持armeabi-v7a和arm64-v8a,包体积小、性能也相对较强(支持硬件浮点),属于前几年主流适配方案

缺点:无法发挥现在64位机器的性能,64位机器需要向下兼容到32位

2.3、只适配 arm64-v8

优点:性能最佳,包体积小
缺点:兼容性差,只能运行在arm64-v8的64位机器上

三、应用商店64位APP上架适配

目前64位适配方案:armeabi-v7a、arm64-v8。用一张图表示整个查找过程

方案一:同时适配armeabi-v7a、arm64-v8

这是目前使用比较多的适配方案,我们在app -> Gradle的ndk abiFilters中配置即可

优点:兼容性强、性能高,支持64位,省事(只打一个包)

缺点:打包时需要把"armeabi-v7a", "arm64-v8a"下两份so库合到一个包,包体积较大

评价:目前适配64位懒人做法

android {defaultConfig {...ndk {abiFilters "armeabi-v7a", "arm64-v8a"}}...
}

方案二:armeabi-v7a、arm64-v8分开打包

这种也是目前比较主流的适配方案,我们在app -> Gradle的split分包中配置即可

优点:兼容性强、性能高,支持64位,包体积小(目前各大应用市场已经提供32位;64位的包分开上传)

缺点:应用分发时稍微麻烦,需要同时上传32位、64位。

评价:这种是未来的趋势

android {...splits {abi {reset()enable trueuniversalApk false  // If true, also generate a universal APKinclude "armeabi-v7a", "arm64-v8a"}}...
}

四、android studio配置梳理

4.1、ndk abiFilters

用于配置一个包打多个CPU架构的

ndk {abiFilters "armeabi-v7a", "arm64-v8a"
}

4.2、Android split分包

用于配置分包

  • enable: 是否启用ABI拆分机制

  • reset():重置ABI列表为只空字符串,一半和include、exclude一起使用,如果要用必须在- - include和exclude前面

  • include:指明要包含哪些ABI,目前使用最多的伪64位处理器的arm64-v8a,其次才是- armeabi-v7a

  • exclude:默认包含下所有ABI,可以移除一些ABI

  • universalApk:是否打包一个通用版本,包含所有的ABI,默认值为 false

splits {abi {reset()enable trueuniversalApk false  // If true, also generate a universal APKinclude "armeabi-v7a", "arm64-v8a"}
}

可以根据配置不同打出多个包

4.3、ndk abiFilters && Android split分包区别

根据需求配置,一般不能同时配置(或者enable置为false),会编译报错

安卓CPU架构梳理 应用商店64位APP上架适配相关推荐

  1. 升级版本-汇编码转机器码万能转换工具(支持32种CPU架构指令16/32/64位的转码)

    众所周知,计算机核心处理器就是CPU是计算机的重要组成部分.所有的程序都会化为机器代码由CPU去逐个执行. 而CPU架构类型众多,也导致了多种指令类别的不统一.如果有涉猎不同的CPU指令集时转换工具会 ...

  2. 爱奇艺App架构升级之路——64位适配探索与实践

    背  景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...

  3. CPU、操作系统的32位与64位

    我们经常听说操作32位和64位,今天就和大家分享一下32位和64位的知识! 一.Windows操作系统32位与6位的区别 32位.64位操作系统又叫Windows X86和Windows X64. 1 ...

  4. Android手机64位APP兼容

    为什么 2022 armv9芯片新机出货,不兼容32位,出现卡顿闪退等问题 64位性能更好 手机硬件升级,存储更大,应用包体积不敏感 应用市场的政策 Google Play声明 自 2019 年 8 ...

  5. 32位机4G虚拟内存 64位机128G虚拟内存计算误区

    1. 32位 我以为32bit(这里我没搞清地址总线的概念,总结来说:32位CPU每次可以处理32个bit 4个字节(B),每一个字节都有一个地址,32位操作系统又有32个地址总线,两个地址总线00 ...

  6. android应用商店升级标准,五大应用商店宣布:共同推进安卓APP升级64位架构

    [CNMO新闻]据媒体报道,近日,小米应用商店.OPPO应用商店.vivo应用商店.腾讯应用宝和百度手机助手等五大应用商店宣布,将共同推进国内安卓生态对64位架构的升级支持,目的是更好提升APP性能体 ...

  7. 安卓APP升级64位架构

    What 最近收到了小米官方发送的安卓APP升级64位架构的通知,具体邮件如下: 尊敬的开发者: 您好! 为更好地提升APP性能体验,降低APP功耗影响,小米应用商店与OPPO应用商店.vivo应用商 ...

  8. 2023 年淘汰 32 位 ARM 将全面转向 64 位 CPU 架构

    前不久 ARM 发布了 ARMv9 指令集,并基于此推出了 Cortex-X2/A710/A510 架构,这是 10 年前推出 ARMv8 之后的一次更大更新,全面迈向 64 位指令集.ARM 日前更 ...

  9. Chrome现在也能编辑pdf文件了!64位安卓版上线,网页加载快10%,还有良心标签管理功能...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 全世界最多人在用的Chrome浏览器,今天更新了. 版本号:Chrome 85. 增加一系列标签管理功能,还自带PDF编辑器,并且提升10 ...

最新文章

  1. 操作系统常用词典(三)
  2. 撩课mysql_撩课-Mysql第20部分索引
  3. Underscore _.template 方法使用详解
  4. 毫米波雷达_毫米波雷达基础知识
  5. 电子商务(六)-作业题解-第3章
  6. 【今晚8点半】:对话袁家军——成都的多媒体圈
  7. 工作302:scss目录编写
  8. iOS8上本地通知接收不到的问题
  9. ArcEngine数据编辑--选择要素
  10. linux运维实战centos7.6,centos7新特性6
  11. 替代 NetMeeting 的多人屏幕共享工具 InletexEMC 国外出品,永久免费
  12. 如何写一份竞品分析报告——产品经理养成路
  13. 人工智能智能制作PPT构想---论文与PPT介绍
  14. 电驱系列:直流无刷马达(不用芯片,独立元器件搭建)
  15. D语言/DLang 2.085.1 发布,修复性迭代
  16. 节能降耗 | AIRIOT智慧电力综合管理解决方案
  17. 根证书,解决win7 sp1 64位系统在线安装VS2017 或VS2019的失败
  18. 方正集团将打造四大板块
  19. c语言作业素数探求实验题,c语言课程设计-素数探求.doc
  20. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(一)------------签名与验证

热门文章

  1. poj 3243 Clever Y
  2. 不把问题推给老板,你就是卓越的管理者
  3. SMGP 3 0协议 多问多答
  4. 【C++二叉树的序列化和反序列化】
  5. 现在运动都买什么耳机、性价比最高的运动耳机推荐
  6. 通过Idea启动项目让控制台输出JAVA汇编代码
  7. python爬取千千音乐榜单_Python爬取QQ音乐榜单数据
  8. 从腾讯云上下载出现错误
  9. IntelliJ IDEA14 之 如何删除项目
  10. Hive 和 Hbase 整合