安卓APK安装包arm64-v8a、armeabi-v7a、x86、x86_64有何区别?如何选择?
当我们去GitHub下载应用的时候是不是经常很懵逼,就像下图一样,粗看一下如此多安装包到底要选择下载哪个且每种安装包到底有哪差别?毕竟因为自己一无所知,有时便随意下载一个后,安装时却报『此版本与你的系统不兼容』的错误,只得一个一个下载尝试,不但浪费时间,还不知所谓为何有此错误!?
安卓CPU类型的说明
- arm64-v8a: 第8代、64位ARM处理器,目前手机大多数是此架构
- armeabiv-v7a: 第七代及以上的 ARM 处理器。2011年5月以后生产的大部分安卓设备都使用它
- armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多,缺乏对浮点数计算的硬件支持,在须要大量计算时有性能瓶颈。
- x86: 平板、模拟器用得比较多。x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现对arm .so 的兼容。考虑 x86不到1% 的市场占有率,x86 相关的两个 .so 也是可以忽略的。
- x86_64: 64位的平板
- mips/mips64 极少用于手机可忽略。
armeabi设备只兼容armeabi,不支持硬件辅助浮点运算,支持所有的 ARM* 设备;
armeabi-v7a设备兼容armeabi-v7a、armeabi;
arm64-v8a设备兼容arm64-v8a、armeabi-v7a、armeabi;
x86设备兼容x86、armeabi;
x86_64设备兼容x86_64、x86、armeabi;
mips64设备兼容mips64、mips;
mips只兼容mips;
以arm64-v8a设备为例,该Android设备优先寻找libs目录下的arm64-v8a文件夹。如果有文件夹,但是没有so库,则会报错。如果没有arm64-v8a文件夹,则会去找armeabi-v7a文件夹。如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so
从上面解释就可以大概知道下载哪种APK了。普通手机用户,建议下载arm64-v8a
(第8代、64位ARM处理器)版本,能够发挥手机最佳性能(只要本型号手机支持8G运存或8G以上就是64位处理器)。如果是很老的手机,也有可能不是64位处理器,那么就选择armeabi-v7a
,几乎通用所有手机,而且也兼容64位处理器。
以前面图片的安卓应用为例,没有标明处理器版本,通常是通用版本,有的应用会写上-universal
。这个版本所有安卓手机都兼容,但是安装包文件大小是其他版本的几倍。所以没必要选择,忽略该版本。接着是arm64-v8a
和armeabi-v7a
了,通常情况下arm64-v8a
可以覆盖armeabi-v7a
安装,而后者不能覆盖前者,需要卸载arm64-v8a
才能安装armeabi-v7a
。最后面两个版本几乎没有手机在用了,也忽略掉。
如果想知道自己手机更详细的CPU架构类型,可通过下列方式。
方式一、通过USB调试使用adb工具进行查询(此方式推荐用于MIUI系统)
1、下载adb工具,地址:adbdownload.com
2、下载后解压将工具包放于除C盘外其他任何一个盘中不包含中文字符的目录中
3、将adb.exe所在目录加入电脑环境变量中
4、打开手机开发者模式和USB调试功能,并用数据线连接电脑
5、打开电脑命令行CMD,输入命令adb version
,打印出版本号就配置成功
6、输入以下代码即可显示cpu架构类型
C:\Windows\system32>adb devices
List of devices attached
26ACA824HG002HJ device
C:\Windows\system32>adb shell getprop ro.product.cpu.abi
arm64-v8a
除上面使用USB调试方式查询以外,MIUI系统的手机还可以安装『Devcheck』App来查询。
步骤:启动Devcheck->系统->架构一栏就显示了CPU架构类型,一般显示出来的是aarch64(64-bit)等,其实它也就是arm64 v8a架构之一而已。
方式二、安装『隐秘参数App』直接查看(此方式适用于非小米系统)
- 下载地址:com.x1y9.probe
- 启动隐秘参数App并查看平台栏的soc信息,即是cpu架构类型
注:目前大多数手机均支持armeabi-v7a/arm64-v8a/armeabi的cpu架构,此三种架构随意下载一个都可以。