Android 中的 armeabi,armeabi-v7a,x86,mips区别

本文详细解释了Android项目中常见的四种CPU架构:mips、armeabi、armeabi-v7a和x86。文中介绍了这些架构的特点及其适用场景,帮助开发者更好地理解如何选择合适的本地库文件以提高应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android日常的开发过程中有的项目需要引入第三方的库,有时候大家可能会在libs文件夹下看到

mips、armeabi、armeabi-v7ax86这四个文件夹。

那么这三个文件夹下面的包是干什么用的?

这三个包下面存放的用C编译的本地库文件(各类『.so』文件)。

mips、armeabi、armeabi-v7a和x86都表示CPU的类型。一般的手机或平板都是用arm的cpu。不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。

mips、armeabi、armeabi-v7a和x86到底是什么

mips:MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。

armeabi默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI (二进制接口)创建的二进制代码将可以在所有 ARM* 设备上运行。所以armeabi通用性很强。但是速度慢

armeabi-v7a创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu.

x86:支持基于硬件的浮点运算的 IA-32 指令集。x86是可以兼容armeabi平台运行的,无论是armeabi-v7a还是armeabi,同时带来的也是性能上的损耗,另外需要指出的是,打包出的x86的so,总会比armeabi平台的体积更小。

总结

如果项目只包含了 armeabi,那么在所有Android设备都可以运行; 如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行; 

如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi, armeabi-v7a和x86,

所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。


转自:http://blog.youkuaiyun.com/loveyaozu/article/details/51205820

### 如何在 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]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值