android:支持的7中cpu架构armeabi、armeabi-v7a、arm64-v8a、x86等

android:支持的7中cpu架构armeabi、armeabi-v7a、arm64-v8a、x86等,第1张

android:支持的7中cpu架构armeabi、armeabi-v7a、arm64-v8a、x86等

目前android支持如下7中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)

现状

目前手机市场上,x86 / x86_64/armeabi/mips / mips6 的架构,基本可以不不考虑了,它们的占有量应很少很少了,arm64-v8a作为最新一代架构,应该是目前的主流,armeabi-v7a只存在少部分老旧手机。

问题:只适配了armeabi-v7a,那如果APP装在其他架构的手机上,如arm64-v8a上,会蹦吗?
答:不会,但是反过来会。

所以,我们项目中该如何适配呢?
因为armeabi-v7a和arm64-v8a会向下兼容:

只适配armeabi的APP可以跑在armeabi,x86,x86_64,armewabi-v7a,arm64-v8上只适配armeabi-v7a可以运行在armeabi-v7a和arm64-v8a只适配arm64-v8a 可以运行在arm64-v8a上

方案一:只适配armeabi
优点:基本上适配了全部CPU架构(除了淘汰的mips和mips_64)
缺点:性能低,相当于在绝大多数手机上都是需要辅助ABI或动态转码来兼容

方案二:只适配 armeabi-v7a
同理方案一,只是又筛掉了一部分老旧设备,在性能和兼容二者中比较平衡

方案三: 只适配 arm64-v8
优点: 性能最佳
缺点:只能运行在arm64-v8上,要放弃部分老旧设备用户

现在的大厂APP适配中,这三种都有,大部分是前2种方案。

如何让性能与适配兼得?

splits {
 abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    }
}

在项目中这样适配,然后会打出多个不同的包。
Google Play 支持上传多个APK,但是,国内的应用商店目前还不支持,以后应该也会支持。

参考资料

https://blog.csdn.net/u012400885/article/details/52923765

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5716844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存