【面向面试学习】Android CPU架构适配需要注意哪些问题?

1,172 阅读1分钟

由于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’ 
  }

参考

Android 的7种CPU架构