安卓CPU架构梳理 应用商店64位APP上架适配
一、安卓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上架适配相关推荐
- 升级版本-汇编码转机器码万能转换工具(支持32种CPU架构指令16/32/64位的转码)
众所周知,计算机核心处理器就是CPU是计算机的重要组成部分.所有的程序都会化为机器代码由CPU去逐个执行. 而CPU架构类型众多,也导致了多种指令类别的不统一.如果有涉猎不同的CPU指令集时转换工具会 ...
- 爱奇艺App架构升级之路——64位适配探索与实践
背 景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...
- CPU、操作系统的32位与64位
我们经常听说操作32位和64位,今天就和大家分享一下32位和64位的知识! 一.Windows操作系统32位与6位的区别 32位.64位操作系统又叫Windows X86和Windows X64. 1 ...
- Android手机64位APP兼容
为什么 2022 armv9芯片新机出货,不兼容32位,出现卡顿闪退等问题 64位性能更好 手机硬件升级,存储更大,应用包体积不敏感 应用市场的政策 Google Play声明 自 2019 年 8 ...
- 32位机4G虚拟内存 64位机128G虚拟内存计算误区
1. 32位 我以为32bit(这里我没搞清地址总线的概念,总结来说:32位CPU每次可以处理32个bit 4个字节(B),每一个字节都有一个地址,32位操作系统又有32个地址总线,两个地址总线00 ...
- android应用商店升级标准,五大应用商店宣布:共同推进安卓APP升级64位架构
[CNMO新闻]据媒体报道,近日,小米应用商店.OPPO应用商店.vivo应用商店.腾讯应用宝和百度手机助手等五大应用商店宣布,将共同推进国内安卓生态对64位架构的升级支持,目的是更好提升APP性能体 ...
- 安卓APP升级64位架构
What 最近收到了小米官方发送的安卓APP升级64位架构的通知,具体邮件如下: 尊敬的开发者: 您好! 为更好地提升APP性能体验,降低APP功耗影响,小米应用商店与OPPO应用商店.vivo应用商 ...
- 2023 年淘汰 32 位 ARM 将全面转向 64 位 CPU 架构
前不久 ARM 发布了 ARMv9 指令集,并基于此推出了 Cortex-X2/A710/A510 架构,这是 10 年前推出 ARMv8 之后的一次更大更新,全面迈向 64 位指令集.ARM 日前更 ...
- Chrome现在也能编辑pdf文件了!64位安卓版上线,网页加载快10%,还有良心标签管理功能...
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 全世界最多人在用的Chrome浏览器,今天更新了. 版本号:Chrome 85. 增加一系列标签管理功能,还自带PDF编辑器,并且提升10 ...
最新文章
- 对象的引用和clone
- LVS负载均衡之持久性连接介绍(session篇)
- Semi-sync master failed on net_flush() before wait
- 单核工作法13:永不拖延(上)
- 使用Objects判断对象是否为空,并返回对应信息
- C#读取资源文件的两种方法及保存资源文件到本地
- JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)
- 将EntityManager.refresh添加到所有Spring数据存储库
- 技术管理规划-从哪入手?
- vmos安卓虚拟手机系统x86_VMOSPro下载-VMOSPro下载v 1.1.26 安卓版-西西软件下载
- Lync Server在父子域环境中使用图形界面扩展AD架构失败
- 软件概要设计与详细设计
- 软件测试常见面试题汇总大纲
- 票务公司加价将儿童机票售成年人赚取差价
- 亲测苹果CMS简洁精美影视模板整站源码+带视频教程
- 典型的DOS攻击技术
- 用Python选取神股(简单、粗暴)
- PHP 阿里云视频点播HLS加密(简单流程)
- 2021年安全员-A证考试报名及安全员-A证最新解析
- 零散知识点20180403
热门文章
- JSON-Java(org.json) 简介
- 在OpenCV里实现自适应阈值分割
- Docker搭建php本地开发环境 - 保姆教程
- Docker php安装扩展步骤详解
- 【实战】轻轻松松使用StyleGAN(七):用StyleGAN Encoder为女朋友制作美丽头像
- 8张图理解Java---importnew---programcreek
- 打算以“航空航天青少年科普”为主题举办夏令营,写一份策划案。
- freemarker html转义字符,freemarker防止json转义
- matlab中怎么样算距离,MATLAB 距离计算
- ScratchDet:随机初始化训练SSD目标检测器(论文笔记)