最近在研究APP瘦身,碰巧又遇到armeabi、armeabi-v7a、arm64-v8a等ABI相关的知识点,决心记录下来以作分享。
目前现状
首先我们分析下国内的淘宝、微信,以及国外的Facebook、Twitter都使用了哪些ABI。
我们对这4家APK进行Analyze,可以发现Facebook和Twitter只使用了armeabi-v7a,而微信和淘宝只使用了armeabi,分析结果如下图所示:
大厂并没有按照我们的理解使用不同的ABI针对不同的CPU?其实笔者发现携程、饿了么、百度糯米都是只使用了armeabi,阿里系的淘票票使用了armeabi、x86(如果你有兴趣,可以通过爬取分析一下应用市场的前100名都使用了哪些ABI)。
知识点回顾
首先,我们来看下Google老大哥是怎么介绍的ABI的,翻译官方文档:
文档:
不同 Android 手机使用不同的 CPU,因此支持不同的指令集
CPU 与指令集的每种组合都有其自己的应用二进制界面(或 ABI)
ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互
您必须为应用要使用的每个 CPU 架构指定 ABI