由于Android基于linux及开源等特性,让其可以运行在很多种架构的CPU设备上
常见架构
- armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢(只支持armeabi)
- armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能(支持 armeabi 和 armeabi-v7a,目前大部分手机都是这个架构)
- arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit(支持 armeabi-v7a、armeabi 和 arm64-v8a)
- x86 intel 32位,一般用于平板(支持 armeabi(性能有所损耗) 和 x86)
- x86_64 intel 64位,一般用于平板(支持 x86 和 x86_64)
- mips 基本没见过(支持 mips)
- mips64 基本没见过(支持 mips 和 mips_64)
适配要点
- 当然APP支持的CPU越多越好,但是每增多一个架构,随之而来的so库,将显著增大APK大小,这个要做权衡
- 开发时,要确保每个架构下的so库文件要数量名字一致
- 减少支持CPU的数量,并去掉对应的so库能实现APK瘦身的效果(很多大公司只支持armeabi一种架构)
- 可以在gradle中配置如下代码,可以控制打包时,哪些架构的so库打入APK
ndk {
abiFilters ‘armeabi,armeabi-v7a’ // , ‘arm64-v8a’, ‘x86’, ‘x86_64’
}