安卓手机为什么要在2022 年全面普及 64 位应用

2021 年底,国内安卓五大应用商店,共同宣布了将会推进国内安卓生态对于 64 位应用的支持。从这五大厂商发布的联合倡议来看,只要在 OPPO、vivo、小米、腾讯应用助手、百度手机助手上传或者更新 APP,都需要在 21 年 12 月底前上传 64 位格式,不再接受 32 位的 APK,而后者更是在 2023 年直接无法在支持 64 位系统上运行。


而华为则通过华为开发者联盟邮件通知所有开发者,华为将会分阶段淘汰 32 位应用,并全面推行 64 位版本:


2022 年 2 月 1 日起,在华为应用市场新上架 / 升级的游戏及应用,必须包含 64 位版本,华为应用市场不再接收仅包含 32 位版本的应用;9 月 1 日起,华为应用市场将不再接收包含 32 位版本的应用。



让手机终端厂商这样 " 迫在眉睫 " 的推广 64 位应用最主要的原因是来自上游供应链的压力。比如之前 ARM 就宣布,将会从 2022 年开始,旗下芯片产品之中 CPU 的 Cortex 大核将取消对 32 位的支持,这是上游厂商在 " 逼 " 下游厂商全面支持 64 位应用。


安卓的 64 位之路并不顺利

关注手机硬件的用户应该知道,其实早在 Android 5.0 系统发布时,就已经支持 64 位应用,当时处理器为高通骁龙 410,这也是高通首款支持 64 位的处理器,时间为 2013 年,而到 2022 年才 " 强制 " 实现到 64 位,这与谷歌在 2019 年要求开发者在 google 商店中提交 64 位应用整整推迟了 3 年。

虽然当时谷歌已经通过集成最新开发工具 Android Studio,来打开的 APP 直接默认为 64 位 so 文件,想以这种 " 强制 " 性的新规来约束开发者。但这样做似乎并没有引起足够的重视,开发者依旧可以通过修改 Android Studio 的配置文件使得其在打包 so 文件时可以使用 32 位来 " 绕过 ",国际环境如此,国内安卓生态环境就不一样了。


Play 商店、应用汇更新的 APP 都不同


不仅手机厂商有自己的官方软件商店,还有像百度软件管家、酷安、腾讯手机助手等等这样的第三方市场。如果手机中安装了非手机市场的官方版,可能还会在多个商店的版本之间 " 反复横跳 ",就更别提 64 位适配了,能装个纯净的官方应用都不是一件容易的事情。

总之,官方、非官方、固件版本混乱是安装软件生态的通病。

其实到 2021 年,高通 8 Gen 1 和联发科 9000 处理器出来之前,都缺乏一套行之有效的方式来从 " 根儿上 " 解决这个问题。

剩下的就只有从 " 底层 " 杜绝这个情况,用硬件生态来进行 " 管控 "。比如高通、联发科于去年年底发布的骁龙 8 Gen 1 和天玑 9000,除了具有非常强劲的性能提升这个大众可以 " 感知 " 的部分:整个框架升级到了 ARM 最新一代 Cortex-X2 超大核、Cortex-A710 大核和 Cortex-A510 小核架构外,最大变化是更为底层的 " 提升 ",即指令集就采用了 ARM V9。

ARM V9 和上一代 V8 一样,都为纯 64 位指令集,Cortex-X2 超大核与 Cortex-A510 小核只支持(向下兼容 V8)64 位,只有 " 中核 "Cortex-A710 大核兼容 32 位的 V7 指令集。


换句话来讲,如果这款软件还是 32 位的,那么运行在骁龙 8 Gen 1 和天玑 9000 这类 V9 指令集的新架构处理器新机上,就只能被锁定在 A710 上运行,这样手机不管是锁屏还是打开 " 性能模式 " 运行,应用始终都处在 A710 这个比上超级大核性能不足,比下小核也不省电的核心上。


64 位到底有啥提升?

最直接的优势,就是能从数字上直接看出来,即 64 位处理器性能要更强,vivo 曾经表示 " 支持 64 位设备是安卓应用程序利用超过 4GB RAM 地址空间、在数据处理中利用更宽寄存器和更高精度,以及获取强化安全特性的唯一途径。"

在相同频率下,64 位处理器可以处理 8 字节数据,而 32 位只能处理 4 字节数据,处理数据更快,此外在寻址空间上也有非常大差距,例如 32 位寻址空间为 2 的 32 次方,大约支持 4GB,而 64 位是指数级别增长,为 2 的 64 次方,并支持动态内存分配。

总而言之,64 位处理器、支持 64 位应用系统以及 64 位应用共同协作,这软件上的性能 " 三架马车 " 并驾齐驱,才能让运行效率得到提升。


既然 64 位应用能够带来性能提升,那为什么普及来就如此费劲?


除了前面提到的软件版本、下载渠道混乱外,一大原因是安卓对于 " 旧设备 " 的兼容性非常好,比如虽然谷歌通过各项措施来让开发者推出 64 位的应用,但仍然保留了对于 32 位应用的兼容,甚至在自家 Chrome 浏览器的下载页面也提供 32 位选择 .

另外对于开发者而言,维护运营成本也是制约 64 位普及的 " 绊脚石 ",例如开发者如果只开发 32 位应用,它是完全可以运行在 64 位处理器上的,只不过不能以最佳状态运行而已。

但如果只开发 64 位应用,对于一些旧设备来讲就根本无法运行,有流失用户风险。而 32 位和 64 位开发测试需要独立进行,对后续维护成本也是一种负担。

此外还有重要一点,开发者开发安卓类应用并不会单纯使用纯粹的 Java 层开发,而是利用 Android NDK 来让 Java 与 C++ 结合,而在 C++ 中基本都是团队运作,这对于小团队开发者而言,维护和后续安全性都是问题。

2022 年了,安卓的 64 位设备和 APP 发展的怎么样?

既然联合倡议已经公布,安卓手机厂商执行的怎么样?

根据友盟 + U-APM 的数据显示,截止到 2021 年 12 月,市面上 64 位和 32 位设备所占比例为 65% 和 35%,而根据友盟 + U-APM 的移动应用性能监控平台显示,32 位设备的应用崩溃现象是 64 位设备的 4.8 倍,不论是设备所占比还是稳定性,64 位应用都是趋势。


而就目前手机终端设备内置的官方应用商店也好,第三方应用市场也罢,华为、OPPO 应用商店都不会直接标识出升级后的应用是否为 64 位,只有小米在应用商店会清晰地标识出哪款软件在升级时为 64 位。



左边为 vivo 应用商店 右侧为华为应用商店 都没有标注 64 位 APP


例如我用的华为手机就需要借助第三方程序 LibChecker 来查询机内应用,目前机内应用数量为 312 个,大约有 66% 的应用为 64 位,29% 的应用为 32 位。


LibChecker 查询 64 位软件基本上都是 google 系和国际 APP 32 位则为国产软件居多 手机为 Mate 40 Pro EMUI 11 版本


但安卓应用升级到 64 位后,也并不意味着会比 32 位好用,据知乎网友嗜金水狙反应,在 Play 商店中的 QQ 虽然是 64 位版,但有严重 bug 无法使用,也没有夜间模式,没有简洁模式。


图片来自知乎网友嗜金水狙


而 Play 商店中的 QQ 音乐老版本为 64 位,新版本又更新回 32 位。


左侧小米 12 Pro 百度地图为 64 位 右侧为 32 位 打开速度没有明显变化。