虽然同样是在上月亮相,但谷歌推送的Android 11正式版引发的讨论与关注,显然远远比不上iOS 14正式版的亮相。这背后当然不是因为iOS用户在绝对数量上更多,也不是Android本身的更新内容不够有趣与有意义,而是因为在很多人的认知和实践中,iOS的大版本更新往往很快就能用上,而Android的大版本更新,则通常要等待很久才会被各手机厂商推送。
既然不能马上进行体验,用户的漠不关心自然也就很正常。当然,这一切最终还是因为Android系统碎片化的历史欠账,所导致的结果,而版本已经严重碎片化的Android系统与手机厂商复杂的产品线,也就让作为终端手机厂商紧跟谷歌的脚步,推出Android大版本更新的节奏成为了空谈。
但好在自Android 8开始,谷歌方面就一直在积极“补课”,其实现在也已经取得了一定的成果。虽然从2019年8月开始,谷歌方面就已经不再公示各Android版本的具体比例,但在不久前官方公布了一组数据,显示通过系统检测显示,Android 10的安装基数从2019年9月开始后5个月里就达到了1亿之多,并且这一速度相比上代的Android 9加快了28%。
简而言之,也就是说Android 10成为迄今为止普及速度最快的Android版本。而这一成绩背后,则源自于谷歌从Android 8时代引入Project Treble,以及Android 10开始引入的Project Mainline有着不小的关系。Android 8上我们三易生活曾经介绍过多次的Project Treble,是将HAL(硬件抽象层)绑定模式化,改变了以往硬件驱动与系统之间的强关联情况,将“系统层”与“驱动层”拆分,解除了驱动和系统版本的“挂钩”机制,使得手机此后厂商可以为产品单独推送新的Android版本,而不需要重新进行驱动的适配。
当然,此后的Android 9上同样也有Project Treble的加持,但让Android 10普及速度更上一层楼的,其实则是Project Mainline。这一新特性是将系统功能进行模块化,把Android的12个核心组件,也就是媒体编解码器、媒体框架组件、DNS 解析器、Conscrypt、权限控制器、模块元数据等做成了模块,并使用应用商店来进行更新。
Project Mainline的意义简单来说几乎可以解释为“哪里不对点哪里”,如果Conscrypt模块,也就是加速实现安全改进并提高设备安全性的模块出现问题,谷歌方面可以直接通过Google Play推送新版本的Conscrypt给用户,而不再需要像以往一样将这个“BUG修复”整合到系统更新中。事实上,高通主控中的GPU以及ARM的Mali GPU能够实现将GPU驱动单独在应用商店更新,正式是得益于这一功能的加入。
而更具有里程碑意义的变化,则出现在如今的Android 11上,也就是谷歌方面开始对Android的Linux内核进行改动了,其试图将Android设备内核统一至Linux内核的主线。众所周知,为了尽最大努力规避GPL协议所带来的法律风险,谷歌方面一直在想方设法将Linux内核与设备驱动剥离开,尽管目前这个剥离并不完美,以至于虽然依旧存在法律风险,但Android是可以被视为Linux发行版的。
Linux内核对于Android而言无疑是大厦的基石,因此Linux内核的升级会获得BUG修复所带来的安全性、新的硬件驱动、新特性,以及效率的提升。然而运行在Android设备上的Linux内核,其实与谷歌选择的LTS(长期支持)版本Linux内核有很大不同。根据官方公布的数据显示,截止2018年2月,与Linux 4.14.0相比,Android通用内核更改了355行,插入了32266行,并删除了1546行。
在Android 11之前,Linux在到达每一台Android设备前,内核会经历三个阶段的fork。谷歌首先会先选择某个LTS版本(通常为4.14.0)的Linux内核,打上Android系统的特定补丁,使得其成为Android通用内核;紧接着Android通用内核被交付给高通等SoC供应商,集成上主板、蓝牙、WiFi等硬件驱动;最后再被移交至三星与小米这样的设备制造商,打上设备特定的各类元器件驱动,这才构成到了每台设备中的内核。
但这样一套操作下来的最终结果,就是Android设备所使用的内核相较于Linux内核主线,要滞后两到三年的时间。例如谷歌方面在去年11月发布的Pixel 4上,所使用的就是Linux在2017年11月发布的4.14 LTS版本,而刚刚发布的Pixel 5则使用的是Linux 4.19LTS版本,而非作为主线的Linux 5.9。并且由于升级的繁琐,也导致了出厂的Android通用内核版本将会伴随这一设备的几乎整个使用寿命。
面对这一情况,在Android 11中谷歌将系统内核进行了模块化的修改,将内核分成了通用内核镜像(Generic Kernel Image,GKI)与其他GKI模块,其中特定硬件的驱动程序(可能是闭源驱动)将作为内核模块加载,从而提供一个稳定的写入接口,使硬件厂商可以轻松的插入代码,以实现最终消除特定设备内核的目的。而这就可以避免此前类似三星向Linux内核添加唯一代码后,对系统安全造成影响的结果出现。
在Android 11后,谷歌想要升级内核版本,以便让相应设备获得更安全以及更高的性能,就可以直接向具体的设备推送GKI,而不再需要上游元器件厂商以及设备制造商的配合。
因此总而言之,这就意味着从Android 11开始,关于Android系统的一切几乎都被模块化,而这样的改变所带来的将是更加灵活与方便的更新方式。因此极有可能在Android 11之后的系统更新中,更新速度将会越来越快,甚至最终比肩iOS的更新速度也并不是没有可能。