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位。
安卓的开放软件生态系统,直接导致了软件部分的碎片化,想统一并非易事。
此外,从现在安卓软件来看,目前的安装包体积越来越大,这就直接导致安装时需要消耗的内存、运行时占用的系统资源以及对于系统的性能要求也越来越高。采用64位系统可以让单线程处理超过4GB运行内存,这对于处理一些超大型游戏、高码率高规格的视频文件来讲,可以更充分的调动手机内硬件,让机内硬件得到充分发挥。
这就可以解释,为什么智能手机运行内存越来越高,动辄高达12、16GB,处理器频率也越来越高。这一切都是保证64位软件可以流畅运行,但这也带来一些负面因素,比如功耗问题以及超大核处理大型软件带来的发热等等。
总之,2022年或许会成为安卓大规模普及64位应用的“元年”,硬件倒逼软件升级将是常态,不过归根到底,还是需要行之有效又不一刀切的举措,才能让安卓生态良性健康发展。