armabi armabi-v7a armabi-v8a 区别
armabi armabi-v7a armabi-v8a 区别
armeabi默认选项,32位
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备
armeabi-v7a 32位
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算
armeabi-v8a 64位
支持基于 ARM* v8 的设备
支持硬件 FPU 指令
支持硬件浮点运算
不同手机由于cpu的不同,使用不同的驱动。
ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。
• 为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致
• 对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹
早期的Android系统几乎只支持ARMv5的CPU架构,现在支持7种!
Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。
各版本分析如下:
• mips / mips64: 极少用于手机可以忽略
• x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的
• armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈
• armeabi-v7a: ARM v7 目前主流版本
• arm64-v8a: 64位支持
所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的。
Android L开始才真正支持32位和64位的ART虚拟机,配合上64位处理器,名正言顺的运行64位软件。但是问题又来了,没有软件商 愿意开发64位程序。
ARMv8是一套不错的指令集,它既支持未来的64位程序,也向下兼容现有32位程序。有了ARMv8的支撑 64位手机操作系统,如Android L 64bit都可以简单、高效地支持现有的32位App,你不用担心兼容性问题。
在2011年11月,ARM公司发布了新一代处理器64位架构ARMv8的部分技术细节(也就是我们常说的Cortex-A57A53),代表着未来移动处理器迈入64位行列。我们得明确一点,ARM公司自己本身并没有64位芯片设计技术,他是通过了收购MIPS64处理器架构的部分技术使用权,再结合ARM的一些特性设计出来的。也就是说:MIPS、ARM、X86三大架构中,唯一没有64位技术的ARM,通过收购MIPS的形式得到了64位。
armabi armabi-v7a armabi-v8a 区别相关推荐
- Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大. 这时,我们就需要分别打出不同的架构包. 架构 一般来说,x86代表3 ...
- ARM学习系列 ---- ARM NEON
ARM学习系列 ---- ARM NEON 1 NEON概述 1.1 简介 NEON是指适用于Arm Cortex-A系列处理器的一种高级SIMD(单指令多数据)扩展指令集,可执行并行数据处理. 1. ...
- Android的Crash崩溃解决方案-Bugly的使用
我们在开发过程中,经常会遇到程序闪退,但是Eclipse的Consle和Logcat又没有错误提示,或者是只有用的时间长了才会出现的偶然崩溃,这种就很难修复bug,也严重影响用户体验,用户分分钟卸载. ...
- android 获取cpu型号_如何查看Android 手机架构
adb shell cat /proc/cpuinfo processor :系统中逻辑处理核的编号.对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核.或者使用超线程技术虚拟的逻辑 ...
- 解决jniLibs无法引入.so文件
错误信息: java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found或者:java.lan ...
- Android 缺少SO库(只有armabi)的解决办法
Android 缺少SO库(只有armabi)的解决办法 前段时间做一个项目,需要引用一些第三方的插件,结果插件只有armabi的so库,而项目中其他依赖除过armabi的库外基本都有("a ...
- armeabi v5 v7a v8a x86对应的so库详解
ABI:应用程序二进制接口,Application Binary Interface. armeabi-v7a: 针对有浮点运算或高级扩展功能的arm v7 cpu,32位ARM设备.第7代及以上的 ...
- Cortex-A53、A57、A72、A73 、ARM7,ARM9,Cortex-M3,Cortex-M4,Cortex-A8的区别
Cortex-M内核M0,M0+,M3,M4,M7之间的区别 图片来自于www.stmcu.com.cn high-performance 高性能 Mainstream 主流 Ultra-low-po ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
最新文章
- 深度学习 Optimizer 梯度下降优化算法总结
- 82. Leetcode 23. 合并K个升序链表 (排序)
- 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程
- 修复版易支付源码可运营
- 如何在 vue 项目中引入 html 文件
- Android中的观察者DataSetObservable和DataSetObserver
- 一个悄然崛起的国产软件,太强了!
- 51单片机数码管闪烁c语言,AT89C51单片机数码管闪烁问题怎么解决
- 单片机c语言1小时视频教程,1小时学会C语言51单片机C语言入门教程.doc
- 国有数据要素市场的政策红利,你get 到了吗?
- 分享几个蛋白质互作网站——String (二)多基因蛋白互作
- 【后缀数组+???】BZOJ3654 图样图森破
- Object-Contextual Representations for Semantic Segmentation论文解读
- Git No newline at end of file
- [unityshader]制作能量护盾以及简单互动
- 长沙云栖谷交通事故_长沙含浦片区自发成立抗洪救灾志愿者服务队转移被困群众(组图)...
- mybatis配置文件 .dtd头部约束 出错报红 【亲测实用,可供参考】
- 2017年终总结,2018首次送书!
- 【Linux命令篇】文档笔记
- python 如何爬虫wind api数据_Python网络爬虫实战之十:利用API进行数据采集