armeabi armeabi-v7a mips x86 理解

简介

armeabi、armeabi-v7a、mips、x86 如何理解?

ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。


armeabi
默认选项,
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备


armeabi-v7a 
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算


x86 
支持基于硬件的浮点运算的 IA-32 指令集


mips 
支持二进制接口
既然armeabi通用,为什么要使用其它指令集呢?
答:虽然armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力。armeabi就是针对普通的或旧的armcpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。x86、mips同理。

扩展知识
EABI(嵌入式应用二进制接口)
Embedded application binary interface, 即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原理的基础,可惜arm的EABI迄今为止没有完全订好。作为EABI的组成部分有过程调用规范,可执行文件格式规范,c/c++ ABI规范和调试格式规范。EABI ,说的是这样的一种新的系统调用方式
NEON
一种由 ARM 开发的 64/128 位混合 SIMD 体系结构,可以提升多媒体和信号处理应用程序的性能。 NEON 作为处理器的一部分来实现,但是它拥有自己的执行管道,以及有别于 ARM 的寄存器组。 关键功能包括对齐和未对齐数据访问,支持整型定点和单精度浮点数据类型、与 ARM 核心的紧密耦合,以及具有多个视图的大型寄存器文件。
SSE

向英特尔架构(IA)的SIMD 流指令扩展(英特尔推出的类似 NEON 的工具)。 


### 如何在 Android 构建配置中使用 abiFilters 支持 armeabi-v7a 和 arm64-v8a 为了优化 Android 应用程序的分发并减少 APK 文件大小,可以针对不同的 CPU 架构(ABIs)分别打包应用程序。这可以通过 `build.gradle` 中的 `abiFilters` 属性来实现。 以下是具体的配置方法: #### 修改 `build.gradle` 文件 在模块级别的 `build.gradle` 文件中添加以下代码片段以启用 ABI 过滤器功能: ```gradle android { ... splits { abi { enable true // 启用 ABI 分割 reset() // 清除默认设置 include 'armeabi-v7a', 'arm64-v8a' // 明确指定要包含的 ABIs exclude 'x86', 'mips' // 排除不需要的 ABIs } } packagingOptions { pickFirst '**/lib/arm64-v8a/**' pickFirst '**/lib/armeabi-v7a/**' } } ``` 此配置会告诉 Gradle 只生成适用于 `armeabi-v7a` 和 `arm64-v8a` 的 APK 版本[^1]。其他架构如 `x86` 或 `mips` 将被排除在外。 #### 使用 `defaultConfig.ndk.abiFilters` 另一种更简洁的方式是在 `defaultConfig` 块中定义所需的 ABI 列表: ```gradle android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' // 设置目标 ABI } } } ``` 这种方式同样能够确保最终构建的 APK 仅包含所选的二进制文件[^3]。 #### 多 APK 配置注意事项 如果计划为每种屏幕密度或语言创建单独的 APK,则需要注意这些选项之间的交互作用。例如,在同一项目中同时启用多个分割维度可能会显著增加构建时间以及输出文件的数量[^3]。 #### 示例场景说明 假设开发的应用主要面向现代移动设备,并希望最小化安装包体积,则可以选择专注于支持较新的硬件平台(即 `armeabi-v7a` 和 `arm64-v8a`)。这种策略不仅有助于降低存储需求,还能提升性能表现,因为更高版本的处理器通常具备更强的能力处理复杂计算任务[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值