主页(http://www.175shouji.com):“删除”应用版本号是 Android 的无奈,也是进步
如果你最近有关注我们三易生活的相关内容可能会记得,近来我们接连对一些罕见机型或稀有移动平台进行了 " 考古 "。
毕竟,这些老机型的硬件也好、系统也罢,普遍都过于 " 古老 ",因此也就导致其所内置的应用商店往往都已不能使用。于是,我们通常需要先用一台其他设备访问一些靠谱的、存有大量古早 APK 文件的资源站,找到老机型能用的软件、并将其下载,然后再将 APK 文件传输到这些机型上尝试安装和运行。
为什么?因为应用 " 版本号 " 对于用户来说本无太大作用
在解释谷歌此举的用意前,我们首先想要让大家来解答一个 " 简单 " 的问题。下面这四个不同版本的 Google Play Service 应用,哪一个才能用于华硕 Zenfone Zoom 这款机型上?
A. Google Play Service 22.09.20.040300-434869283
B. Google Play Service 22.12.25.190400-439420056
C. Google Play Service 22.18.20.040700-451484765
D. Google Play Service 22.24.13.100400-455379025
怎么样,是不是感觉光看这几串数字眼睛就已经花了?但如果有着丰富的 " 玩机经验 ",你可能会知道,Zenfone Zoom 是一款基于 Intel Atom 平台的 x86 架构机型,同时其最后一个官方系统版本是 Android 6.0。而在上述这四个应用的版本号里,"040700" 字段中的前三位数字 "040",所指的是兼容 Android 6.0 系统,而后三位数字 "700" 则正是为 x86 处理器适配。因此,正确答案应该选 C。
但问题在于,一方面能看懂这种 " 软件版本号 " 隐藏信息的人,本就少之又少。
另一方面,对于绝大多数朋友而言,在通过手机内置应用商店更新软件(而不是像我们这样,辛辛苦苦去资源站找 APK 下载)时,应用商店本就会自动识别硬件信息、系统版本,并自动推送最兼容的应用版本,所以大部分人本来就完全没有必要去了解和记住 Android 应用版本号里的各种门道。
在最新的 Android 生态下,软件版本已经失去了意义
当然,Android 软件的 " 版本号 " 如今不只是对用户而言已无意义,哪怕是对于开发者和谷歌来说,也确实到了该与它说再见的时刻。
为什么这么讲?首先大家都知道,Android 生态最大的短板就在于设备的 " 碎片化 "。即便不算那些彻底过时的老机型,目前也有着不下十种不同的主流 SoC 方案,至少三四个不同的常见系统版本,还有不知道多少种各自不同的屏幕分辨率和长宽比。
这款常用应用,就为不同 Android 机型硬件匹配了多个版本
如何才能确保对以上所有这些设备的完美兼容呢?以前行业中常见的办法有两种。一种就如同上图所举的这个例子一样,针对每一个不同的硬件平台、系统版本,甚至是每一个不同的屏幕分辨率都单独编写一个版本。另一种办法则是将所有不同平台、不同系统版本,乃至不同分辨率的素材和代码全部打包成一个安装包,由程序在安装、运行时自动适配。
所以其实自 2021 年 8 月开始,谷歌就已经在自己的应用商店里力推新的 Android App Bundles(.AAB)安装格式,用以取代此前的 APK 程序包。在这个新的安装格式下,开发者们向应用商店上传应用时,不再需要针对每一个不同平台都上传一个完整的 APK 安装包,更不用把所有代码都打成一个 " 大包 ",取而代之的是可以直接上传针对不同硬件、不同系统版本,乃至不同分辨率的界面代码 " 模块 "。
等到消费者从 Google Play Store 下载应用时,应用商店就会自动根据用户的机型、系统情况,挑选出最佳的 " 代码模块 " 进行即时整合。如此一来,既能确保每台设备下载到的都是最兼容自身的应用代码(版本),又能节约流量和存储空间。
只不过这同时也意味着,一方面开发者实际上不再需要维护 " 整个软件 ",每次更新软件功能时只要上传特定的、被更新过的功能模块就行。另一方面,不同消费者使用不同的设备,在应用商店里下载到的软件本身,就会存在着各种细微上的差异。既然每个人下到的软件可能都不一样,再纠结 " 版本号 " 自然就已毫无意义。而且更准确地说,在这种情况下,软件本身其实也压根就不再需要有 " 版本 " 的概念了。
" 消灭版本号 " 不见得是一种进步,但确实更适合市场
请注意,前文中我们所提及、所有关于目前移动应用 " 版本号 " 消失的事实和背后的技术理由,其实都有一个共同的大前提,那就是在当前由谷歌所引领的 Android 生态下。