小火箭版本太低
关于Android侧载这件事,又双叒叕有了新的变化。随着此前CEO桑达尔·皮查伊在法庭上作证时表示,“我们不想让你完全破坏你的手机,因为侧载可能会在你的手机上安装恶意软件,并对你的安全构成严重威胁”后,2024年谷歌也开始了打压Android生态的侧载行为。
到了本月初,或许是收到了大量用户的反馈,谷歌方面又宣布Play Store将允许用户更新侧载的App,为侧载留了一个后门。可是仅仅过了不到一周时间,以提供Android应用APK安装包文件著称的网站APKMirrors突然发文称,谷歌毫无征兆地停止为应用程序生成完整Android应用APK安装包,现在仅提供bundled版本。
看到这里或许有不少朋友会感到迷惑,毕竟APK就是Android系统的应用程序安装包后缀,就好像Windows系统的.exe文件一样,那么bundle又是什么呢?
bundle版本的Android应用全称其实是Android App Bundle(下文将简称为ABB)小火箭版本太低,这是谷歌方面此前在2018年I/O大会上推出的开源应用安装包格式。其核心目的,就是将原来整合了针对不同分辨率屏幕、不同SoC的APK安装包,拆分成多个模块,从而减少安装包和APP的体积。
由于Android手机的屏幕分辨率不同,SoC中的GPU也有高通Adreno、ARM Mali的区别,甚至很快连CPU也不再是来自同一架构,所以软件开发者为了满足不同用户的需求,就会在APK安装包里涵盖数个不同分辨率、CPU指令集、GPU方案的“大杂烩”。
一股脑将所有可能会出现的情况都塞进APK,确实让开发者不至于损失用户,可对于用户来说,使用的设备却是唯一的,因此实际上其中可能会有大量的代码、数据包都不是针对自己的手机,以至于花了真金白银购买到的存储空间会被这些东西白白占用。所以在这种情况下,ABB作为APK的替代品就可以让应用程序变得更小,从而实现“千机千面”。相比于传统APK,AAB格式下的应用程序就不会包含手机不需要的功能模块。
既然如此,为什么一直到目前为止,大家在各种Android应用程序的官网下载的安装包依然都是APK格式呢?尽管从2021年8月开始,谷歌在自家Play Store开始要求开发者使用AAB格式来发布新的应用,从而取代APK作为标准发布格式,但AAB却无法像APK一般直接在Android系统中打开,必须通过Play Store或ADB命令行实现。
显而易见,对于习惯了从Play Store下载应用的用户来说,并不会感知到从APK到ABB的变化,可一旦脱离Play Store环境,ABB格式的Android应用对于一般用户又形同虚设。并且为了满足用户分享Play Store上的应用,谷歌还提供了从AAB文件创建全尺寸APK安装包的反向操作、即“fat APK”。
所以此次谷歌禁止的,就是这个从ABB还原APK的“fat APK”功能。那么问题就来了,谷歌为什么要这么做呢?目的当然与侧载脱不开干系。“fat APK”其实就是谷歌为了方便用户导出、并共享某个应用给其他用户侧载,从而推出的功能。毕竟谷歌力推的ABB格式并不是一个在Android系统环境里通用的应用安装包格式,非Play Store用户也很难使用ABB格式的安装包。
现在谷歌的策略是在Android生态里搞“双轨制”,其中开源的AOSP部分依然支持侧载以及APK安装包。但在他们自家的谷歌移动服务(GMS) 框架下,随着“fat APK”成为过去式,用户已经无法从正常渠道获得APK文件,基于APK安装应用的操作也就成为了过眼云烟。
所以谷歌现在的意图就很明显了,在开源的AOSP生态里由于需要尊重社区的意见,因此禁止侧载这种有悖于Android自由开放精神的操作就要徐徐图之。可是在自己说了的GMS框架下,侧载的地位就与iOS生态一模一样了。尽管曾经的谷歌对于“分裂Android”这件事严防死守,甚至不惜搞出反分裂化协议(Anti-fragmentation),可如今他们自己却在事实上以是否支持侧载为标准,将Android一分为二了。