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 区别相关推荐

  1. Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)

    默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大. 这时,我们就需要分别打出不同的架构包. 架构 一般来说,x86代表3 ...

  2. ARM学习系列 ---- ARM NEON

    ARM学习系列 ---- ARM NEON 1 NEON概述 1.1 简介 NEON是指适用于Arm Cortex-A系列处理器的一种高级SIMD(单指令多数据)扩展指令集,可执行并行数据处理. 1. ...

  3. Android的Crash崩溃解决方案-Bugly的使用

    我们在开发过程中,经常会遇到程序闪退,但是Eclipse的Consle和Logcat又没有错误提示,或者是只有用的时间长了才会出现的偶然崩溃,这种就很难修复bug,也严重影响用户体验,用户分分钟卸载. ...

  4. android 获取cpu型号_如何查看Android 手机架构

    adb shell cat /proc/cpuinfo processor :系统中逻辑处理核的编号.对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核.或者使用超线程技术虚拟的逻辑 ...

  5. 解决jniLibs无法引入.so文件

    错误信息: java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found或者:java.lan ...

  6. Android 缺少SO库(只有armabi)的解决办法

    Android 缺少SO库(只有armabi)的解决办法 前段时间做一个项目,需要引用一些第三方的插件,结果插件只有armabi的so库,而项目中其他依赖除过armabi的库外基本都有("a ...

  7. armeabi v5 v7a v8a x86对应的so库详解

    ABI:应用程序二进制接口,Application Binary Interface. armeabi-v7a: 针对有浮点运算或高级扩展功能的arm v7 cpu,32位ARM设备.第7代及以上的 ...

  8. 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 ...

  9. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

最新文章

  1. 深度学习 Optimizer 梯度下降优化算法总结
  2. 82. Leetcode 23. 合并K个升序链表 (排序)
  3. 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程
  4. 修复版易支付源码可运营
  5. 如何在 vue 项目中引入 html 文件
  6. Android中的观察者DataSetObservable和DataSetObserver
  7. 一个悄然崛起的国产软件,太强了!
  8. 51单片机数码管闪烁c语言,AT89C51单片机数码管闪烁问题怎么解决
  9. 单片机c语言1小时视频教程,1小时学会C语言51单片机C语言入门教程.doc
  10. 国有数据要素市场的政策红利,你get 到了吗?
  11. 分享几个蛋白质互作网站——String (二)多基因蛋白互作
  12. 【后缀数组+???】BZOJ3654 图样图森破
  13. Object-Contextual Representations for Semantic Segmentation论文解读
  14. Git No newline at end of file
  15. [unityshader]制作能量护盾以及简单互动
  16. 长沙云栖谷交通事故_长沙含浦片区自发成立抗洪救灾志愿者服务队转移被困群众(组图)...
  17. mybatis配置文件 .dtd头部约束 出错报红 【亲测实用,可供参考】
  18. 2017年终总结,2018首次送书!
  19. 【Linux命令篇】文档笔记
  20. python 如何爬虫wind api数据_Python网络爬虫实战之十:利用API进行数据采集

热门文章

  1. wps分享为什么要登入_杭州诠网科技有限公司分享seo优化为什么要做网站地图
  2. html -- javascript
  3. 莫比乌斯进阶:bzoj 2693 jzptab(Mobius)
  4. iOS开源库–最全的整理
  5. Opencv人数统计 yolo kcf人头跟踪 人数统计 KCF目标跟踪 YOLO目标跟踪
  6. arm_neon.h文件ABI说明
  7. python条件运算符_Python中的条件运算符
  8. 怎么学习Android
  9. 《Python神经网络编程》自己动手编写一个神经网络
  10. 区块链科普系列之1—区块链的由来