本文来自微信公众号:差评(ID:chaping321),作者:托尼,编辑:面线 美编:焕妍,头图来自:视觉中国
事情的起因还得从两款新机开始说起。
前阵子托尼在测评 realme GT2 Pro 和小米 12 Pro 这两款搭载骁龙8 Gen 1 处理器的新机的时候,注意到它们都开始“排斥”起了 32 位的应用。
首先是 realme GT2 Pro,每次我从第三方渠道安装应用,只要系统检测到它是 32 位,就会在界面弹出“此安装包为 32 位,不建议安装”的风险提示:
想要继续安装这些应用当然可以,但是它们在运行过程中如果出现卡顿或者闪退等问题就别怪手机有 Bug 了,是你安装的应用是 32 位的缘故。
然后是小米 12 Pro,打开手机自带应用商店,你会发现小米在商店首页专门设置了一个醒目的“64 位应用专区”,方便我们直接在里边下载 64 位应用:
一旦遇到你要下载的应用是 32 位,它就会在顶部弹出“该应用未适配本机 64 位处理器”的提示:
同时在应用升级界面,我们还能通过蓝色标签清楚区分这些正在升级的应用是 32 位还是 64 位版本:
然而如果换做是骁龙8 Gen 1 之前的机型,比如搭载骁龙 888 的小米 11,就根本没有对应用的版本做出如此严格的区分,更别提在下载或者安装应用的时候会跳出风险提示了:
之所以这两家手机厂商在新机上要这么做,其实也是迫于无奈。
这是因为在骁龙8 Gen 1 处理器所拥有的 8 个 CPU 核心中,只有 3 个 2.5GHz 的 A710 大核兼容 32 位应用,其余 1 个 3.0GHz 的 X2 超大核和 4 个 1.8GHz 的 A510 中核则均不兼容 32 位应用。
这就导致那些搭载骁龙8 Gen 1 的手机在运行 32 位应用时,只能用到 8 核中的其中 3 个大核,其它 5 核则是处于围观吃瓜状态,根本不参与运算工作。
根据小米和 realme 的说法,如果这个 32 位应用是一个多线程程序,它的性能就会受到可使用核心数的限制,同时也会导致功耗的增加,严重一点甚至还会造成应用的闪退、闪屏、音频异常或者卡顿。
很不幸,托尼简单看了下,发现在我之前下载到手机里的两百多个应用里,有 17.4% 的应用还是 32 位版本,其中不乏中国银行、美团、浙里办、滴滴出行、李跳跳等一些我平时经常会用到的应用:
这意味着要是我现在就把手机换成搭载骁龙8 Gen 1 的新机,就要注意这些应用在新机上的兼容问题。
差友们看到这里先别急着骂高通吃饱了撑的没事找事,把 32 位强制限制在大核上运行的决定不是高通做的,而是比它更上游的处理器设计公司 ARM。
是 ARM 在它去年推出的 Armv9 新架构里,取消了超大核和中核对于 32 位应用的兼容,而骁龙8 Gen 1 CPU 部分使用的架构恰恰就是 Armv9。
除了骁龙8 Gen 1,天玑 9000 和 Exynos 2200 处理器的 CPU 采用的也是 Armv9 架构,32 位应用到了这两款处理器上同样只能用大核运行。
更坏的消息是什么呢?到 2023 年,不管是大核、中核还是小核,ARM 所有的内核都将只支持 64 位,到那时 32 位应用会变得直接不能用。
也正是基于这个原因,厂商们不着急才怪,托尼注意到现在包括华为、vivo 在内的很多厂商都已经开始催开发者赶紧把自家的 32 位应用升级成 64 位:
如果最近有差友正在考虑换机,那就可以先在旧手机上下载一个名为 “ LibChecker ” 的软件来看下自己平时常用的软件是 32 位版本还是 64 版本。
要是 32 位版本的软件占比比较多,那就得衡量下是否值得在这个过渡时期换机。
不过话说回来,ARM 做出的这个决定虽然短期内确实会对 32 位应用在新手机上的使用造成影响,但是从长期来看,这绝对是一件好事。
要知道高通在 2013 年发布的骁龙 410,就已经是一款 64 位的处理器;并且谷歌在 2014 年发布的 Android 5.0,也已经是一款 64 位的安卓系统。
这代表安卓手机从很早开始,无论是在硬件层面还是系统层面都已经是 64 位,运行起 64 位应用完全没问题。
和电脑上的情况一样,一款应用要在手机上运行,首先需要把数据从硬盘加载到内存方便 CPU 访问。
而 32 位和 64 位应用中的 “ 位 ”,指的就是它在这个过程中可供 CPU 寻址的内存空间的大小。
相较于 32 位应用最大只能调用 4G 内存( 2^32 Bytes=4G ),64 位应用最大的优势就是能调用更大的内存,从而使应用的加载、响应速度变更快。
所以我们可以看到那些比较吃性能的应用比如各种大型手游,早就已经是 64 位版本:
就算有些应用不需要用到那么高的性能,为了更好的用户体验和后续功能的开发,某些大公司也会未雨绸缪把自家应用尽早的升级到 64 位。
也正因为 64 位是大势所趋,所以早在 2013 年,苹果就先安卓一步在 iPhone 5s 上使用上了 64 位的 A7 处理器,那时候高通第一款 64 位处理器骁龙 410 要到年底才发布。
而且它在 2015 年就宣布所有的 iOS 应用都必须支持 64 位,否则就不允许上架到 App Store:
到了 2017 年,苹果发布的 iOS 11 就彻底取消了对 32 位应用的支持,它这么做的目的就是要逼开发者只开发 64 位应用。
这时苹果封闭生态圈的优势就体现出来了。
要么就听我的话乖乖开发 64 位应用,要么就从 iOS 上滚蛋,在苹果的强势执行下,现在我们在 iPhone 上用到的所有应用,其实全部已经是 64 位版本。
而安卓阵营之所以还有这么多 32 位应用的存在,要怪就怪谷歌还有各大安卓应用市场太迁就,就是不愿意像苹果那样狠下心来全面禁止 32 位应用。
谷歌曾经在 2019 年 8 月就要求上架到 Play Store 的应用,除了提供 32 位版本外,还必须提供 64 位版本,然而它却留了 “ 漏洞 ”,让开发者可以把 32 位应用轻松变成同时兼容 32 位与 64 位的版本:
到了 2021 年 8 月,谷歌虽然不再允许 64 位设备下载 32 位应用,但它还是没有在自家 Android 系统里下定决心把 32 位应用给直接禁掉,尽管全球只剩 2% 左右的移动设备是 32 位的。
其它应用商店就更不用说,一直都是跟着谷歌屁股跑,小米应用商店、OPPO 软件商店、vivo 应用商店等几大商店直到去年才开始大力推 64 位应用:
连谷歌和各大应用商店都这么不积极,那些制作小应用的个人开发者就更不用说,根本没动力把 32 位应用升级到 64 位给自己额外增加工作量好吧。
毕竟 32 位应用又不是不能用,更何况我开发这些小应用很多时候还是靠爱发电的呢……
俗话说得好有时为了大局着想往往需要有人站出来当大恶人,在这次安卓全面拥抱 64 位生态的进程中,扮演恶人角色的或许就是 ARM 吧。
事实上,自 ARM 发布首款支持 64 位的 Armv8 架构以来,已有近十年的时间,期间高通、华为、联发科基于 Armv8 推出的移动端处理器数不胜数。
估计 ARM 自己也很郁闷,都过去这么久了,安卓竟然还没彻底淘汰 32 位应用……
好在就目前厂商们的动作来看,ARM 在新架构中把 32 位应用限制在大核运行的效果可以说是非常明显,接下来就看那些开发者们的努力了~
资料来源:
苹果官网、小米社区
IT 之家、360doc.com、cnBeta
Youtube - RAM解释-随机存取存储器
知乎 - 64 位软件和 32 位有什么具体区别?
雷锋网 - 32位已死,对安卓和苹果意味着什么?
极客湾 - 骁龙8 Gen1性能分析:功耗爆炸高!但GPU很强...
三易生活 - Android 全面拥抱 64 位,这事或许还得靠 ARM
酷客fans - 2022 年才想起来加强推行64位应用,还得是国内安卓
ARM 官网 - Why Arm Is Making All Cortex-A Mobile Cores 64-bit Only
本文来自微信公众号:差评(ID:chaping321),作者:托尼