32位应用已死,对安卓手机意味着什么?

  文雷科技 leitech

  关注智能手机领域的读者,或许都有洞察到这样一个变化趋势。

  从某个时间点开始,安卓系统的应用适配出现了翻天覆地的变化,诸如《暗影之枪》《涂鸦跳跃》等一系列安卓经典游戏,都先后出现了无法安装/正常运行的情况。

  与此同时,各家安卓厂商的应用商店里面,开始明确针对应用标注其是否为「64 位版本」。不仅如此,每次我从第三方渠道给手机安装应用,只要系统检测到它是 32 位 App,就会在界面弹出“此安装包为 32 位,可能造成发热、卡顿,不建议安装”的风险提示。

  近日,小米更是发布了小米应用商店上架应用完全适配 64 位的通知,官方称自 2023 年 5 月 8 日起,小米应用商店将不再允许仅 32 位包上架或更新;2023 年 7 月 1 日起,小米应用商店将逐步清理在架未适配 64 位的 App。届时仍未适配的应用将无法上架、单独更新,请各位开发者在期限内尽快完成适配。

  在过去数年时间里,尽管谷歌方面三申五令,但是国内安卓市场始终维持在一个以 32 位应用为主,最多也就是同时支持 32 位和 64 位应用的阶段。如今,随着硬件厂商的不断施压,我们正在不断走向只有 64 位应用的时代。或许,在这个百废待兴的 2022 年,32 位安卓应用真的时日无多了。

  杀鸡焉用牛刀

  奇怪了,为何小米突然特别强调「64 位应用」的重要性?你可能会感到疑惑。

  归根结底,还是因为这一代硬件存在着一些特殊情况。众所周知,目前无论是高通的骁龙 8 Gen 2、还是联发科的天玑 9200,它们都采用了 ARM 最新一代 Cortex-X3 超大核,搭配上 Cortex-A710/Cortex-A715/Cortex-A720 中核以及 Cortex-A510 小核的 CPU 架构方案。

  (图源:高通)

  这些 CPU 架构的共性,在于全部核心都采用了 ARM V9 指令集。该指令集在兼容 ARM V9 的基础上,提升整体的处理器性能,同时提升安全性、增强矢量计算、机器学习及数字信号处理。

  问题在于,ARM V9 和上一代 V8 一样,两者都是纯 64 位指令集,而 Cortex-X3 大核、Cortex-A715/Cortex-A720 中核和第一代 Cortex-A510 小核均只支持(向下兼容 V8)64 位,只有 Cortex-A710 和第二代 A510 能够兼容 32 位的 V7 指令集。

  换言之,在今年发布的两款旗舰处理器中,天玑 9200 完全不支持 32 位应用,而骁龙 8 Gen 2 在运行 32 位应用时,也只能用到其中的两个中核和三个小核,无法使用超大核的极致性能,这样一来运行速度和效率就会大打折扣,严重一点可能还会出现增加功耗、应用闪退等问题。

  (图源:ARM)

  不过骁龙 8 Gen 2 的 32 位应用支持,本质上只是对国内市场的妥协。

  早在 2001 年,ARM 便明确表示了升级 64 位的决心,并指出 2023 年 ARM 所有的大小核架构都将采用 64 位指令集。

  受此影响,目前联发科已经全线转向 64 位指令集,除了旗舰产品天玑 9200 以外,中端产品天玑 7200 同样砍掉了 32 位应用支持。

  至于高通这边,有消息称骁龙 8 Gen3 将会是一颗纯 64 位处理器,放弃了对 32 位的原生支持。从某种角度来看,这也算是硬件厂商们在「倒逼」应用软件开发商去加速应用转向 64 位生态的一种表现。

  从 32 位到 64 位

  事实上,在谷歌的眼里,32 位应用是个早应该被淘汰的「残次品」。

  要知道高通在 2013 年发布的骁龙 410,就已经是一款 64 位的处理器;而谷歌在 2014 年发布的 Android 5.0,也已经是一款 64 位的安卓系统。

  这代表安卓手机从很早开始,无论是在硬件层面还是系统层面都已经是 64 位,运行起 64 位应用完全没问题。

  不过虽然开始得快,但是谷歌松散的态度,让 64 位生态到来的时间大大延后了。

  以苹果为例,苹果对旗下应用生态体系的掌控手段可谓是远近闻名。2015 年 2 月,苹果宣布所有 iOS 应用程序都必须支持 64 位,到了 2017 年,苹果正式宣布 iOS 11 将不再支持 32 位应用程序,自此成功实现了 64 位的过渡。

  作为对比,尽管谷歌早在 2013 便支持 64 位应用,但一直以来却并未得到开发人员的重视,即便是在 2019 年强制 Google Play 上架 64 位应用后,部分知名公司的 64 位应用依然存在着 bug 频出的现象。

  国际环境如此,国内安卓生态环境自然更加鱼龙混杂。

  事实上,直到 2021 年,高通 8 Gen 1 和联发科 9000 处理器出来之前,安卓这边始终缺乏一套行之有效的方式来从「根本上」解决这个问题。

  值得庆幸的是,全新处理器底层架构的出现,对既有的应用生态造成了明显冲击。随着越来越多基于 Cortex-A715、Cortex-A510 架构的中端,甚至是入门处理器登场,更多的主流机型都会出现运行 32 位应用比运行 64 位应用更慢、更耗电、发热量更大的现象。

  正因如此,除了小米已经开始通过各种各样的渠道,督促用户尽可能使用 64 位应用之外。2021 年 4 月,包括小米应用商店、OPPO 应用商店、vivo 应用商店、腾讯应用宝和百度手机助手在内的国内几大主流安卓应用商店,更是联合宣布了推进 64 位架构升级的计划。

  直到这时,32 位应用才似乎迎来了业界的联合“强制性”手段。虽然在手段的背后,多少有些硬件倒逼软件更新的意味,但是这样一套强硬措施下来,确实能够驱使着安卓应用开发者必须全面跟上时代,再也不能再靠着老旧的 32 位版本摸鱼养老,这绝对是个好消息。

  未来属于 64 位

  既然联合倡议已经公布,那么各家厂商执行得怎么样?

  想要弄清楚这个问题,我们需要借助一个名为《LibChecker》的应用来查询手机里面的 64 位应用数量。

  (图源:知乎)

  举个例子,借助第三方程序 LibChecker 来查询机内应用,可以确定我使用的小米手机目前机内应用数量为 312 个,其中大约有 85% 的应用为 64 位,仅有 15% 的应用为 32 位。

  具体分析的话,目前国内热门应用已经全面升级 64 位应用,小米预装应用也几乎全面升级成 64 位应用,但是依然有些冷门应用、经典游戏和小米电视助手还停留在 32 位的阶段。

  冷门应用和经典游戏,几乎可以确定是等不到更新的,我们只能希望小米官方能够尽快完成自家应用的全面适配。

  当然,并非每个应用的 64 位版本都更好用。据知乎网友反映,部分厂商为了赶着上架,提供的 64 位应用存在不少 BUG,例如缺少特定功能,或是无法使用简洁模式和夜间模式等均有可能发生。

  在我看来,强制不支持 32 位可能在短时间内会对部分应用和用户体验造成影响,但从长期来看,这绝对是一件好事。

  站在厂商的角度来说,让 32 位应用强行运行在 64 位处理器上,即便核心支持对应的陈旧指令集,处理器的性能依然可能无法得到完全发挥,反而会造成前面说的卡顿、增加功耗等问题,可能会对产品的口碑造成不可逆的负面影响。

  站在用户的角度来说,拥抱 64 位应用生态,可以让单线程处理超过 4GB 的运行内存,保证在处理视频、游戏、解码等操作下,更充分地调动移动设备的性能,让机内硬件得到充分发挥。同时去除 32 位指令集,也可以让核心更加精简,减少不必要的效能损耗。

  换言之,从基于新一代架构的新款旗舰机型,到基于数年前架构的老款中端机型,新版安卓应用理论上都能带来更高的执行效率。

  正因如此,我可以大胆断定:安卓生态的未来,必将属于 64 位应用,属于 32 位应用的倒计时,已经开始嘀嗒作响了。