Google 近日正式发布了安卓11。对于这个最新一代安卓系统,所带来的新功能新特性,自然颇具价值。不过考虑到国内往往会对原生安卓的功能进行种种魔改,其实对于国内用户来说,影响有限。安卓11对国内生态影响最大的,可能还是一些底层变化,这也较少为人提及。
Android 11来了
没错,安卓11的底层又有了不少大变化!所带来的巨变,会深刻影响广大用户,今天就一起来聊聊吧。
刷机不再变砖?Recovery 分区成为历史!
如果你是一名安卓刷机玩家,一定知道 Recovery 这个名词。这是安卓系统中,用于恢复系统的模式,无论是厂商官方升级系统,还是玩家刷入第三方 ROM,通常需要通过 Recovery 来进行。在安卓机中,还专门划分了一个分区来放置 Recovery,但这在安卓11中要成为历史了。
刷机玩家再熟悉不过的 Recovery
传统的 Recovery 升级模式,如果写入 System 系统分区的数据有误,那么机器可能就无法启动,刷机玩家应该很熟悉这一类 “变砖”的情况,甚至厂商 OTA 偶尔也会 “变砖”。要如何避免?事实上,近年的新安卓机使用 A/B 分区机制,很多安卓机已经不需要 Recovery 来引导升级。
Android 系统启动方式的变更,之前需要经由 Recovery,使用 A/B 分区机制后直接通过 boot 来引导启动
在采用了 A/B 分区机制的安卓机中,当系统需要升级的时候,会将新的系统写入其中一个分区,写入成功后则从该分区启动;如果写入失败,或者启动失败,则从原分区启动,这相当于两个系统分区相互备份,大大减少了系统升级的故障率。
安卓11的机制也与此相似。出厂预装安卓11的机器,取消了 Recovery 分区,而且对 A/B 分区机制进行了一定程度的改变。安卓11需要升级系统的时候,会将新系统的数据和现在的系统数据进行对比校验,将差异部分写入另一个分区而不是系统分区;之后,利用新数据启动系统,如果系统顺利启动,那么就将差异数据写入到系统分区,启动失败则抛弃差异数据,用原来系统分区的数据启动。
安卓11这个新机制既有 A/B 分区的可靠性优点,也无需像 A/B 分区那样占据大量的额外空间。无论如何,Recovery 分区都已经遭到了遗弃,预装安卓11的机器,出厂就没有 Recovery 分区,boot 分区更多承担起了以前 Recovery 分区的工作。Recovery 是刷机不可或缺的工具,刷机玩家何去何从?恐怕得另觅出路了。
安卓11是有史以来最容易升级的安卓?
我们知道,Google 一直为解决系统碎片化问题做努力,力求设备能够升级最新版本的安卓。为此,Google 作了很多努力,例如在安卓8.0中推行了 Project Treble 机制,将系统(Android OS framework)单独分区,和硬件驱动(Vendor implementation)分离,此后厂商可以为设备单独推送新版安卓,而不需要重新适配驱动。
Project Treble 将 Google 的安卓系统框架和硬件供应商提供的驱动作了分离
Project Treble 大大简化了安卓系统的升级流程,但这还不够。在安卓10当中,Google 推行了 Project Mainline,将系统进一步细分模块化。在安卓10中,14个系统组件被 Mainline 化,媒体解码器、权限控制器、网络组件等系统组件,都可以像普通 App 一样,通过应用商店来更新——很多朋友发现,今年安卓机的 GPU 驱动竟然能够独立更新,就得益于此。
高通宣布 GPU 驱动可以单独更新
在安卓11中,Google 又进一步对安卓组件进行细分,安卓的组件模块达到了20个之多,安卓的系统维护将会变得前所未有地灵活。不仅如此,Google 还将改制推行到了系统内核当中,安卓的 Linux 系统内核升级将会变得更加灵活。
在当前的安卓系统中,Linux 系统内核升级大体需要经历三个步骤。首先,Google 选定一个 Linux LTS 版本作为安卓内核,打上安卓运行所需要的 Patch;接着,Google 将这个内核提交给高通等 SoC 供应商,供应商再次将其打造成为适配 SoC 的内核;最后,三星等设备商再让内核适配不同的元器件,再次为内核打上各种 Patch,让内核成为真正可以在安卓机上运行的版本。
传统的 Android 系统 Linux 内核升级流程,需要经由重重环节,非常麻烦
由于步骤繁琐,因此当前的安卓机一旦出厂,Linux 内核就很少变动,即使是 Google 旗下的 Pixel 设备,内核也依然只是较为老旧的 Linux 4.14。
而在安卓11中,情况有所变化,Google 将系统内核进行了模块化修改,内核被分成了 Generic Kernel Image(GKI)和其他 GKI 模块。如果想要升级 Linux 版本,Google 可以直接面向安卓机推送 GKI,手机直接升级 GKI 即可,再也不需要经历从 SoC 厂商到手机设备厂商的繁琐步骤。
Android 11开始,内核进行了模块化,一个 GKI 内核可以通用于市面上的大量安卓机
据了解,安卓11的这一特性,在内核版本高于 Linux 5.4以上的设备上,是要求强制执行的。可以说,如果安卓11的设备出厂内核版本就是 Linux 5.4以上,那它有可能会是史上最容易升级的安卓。
安卓存储目录文件夹乱象彻底解决? 相信不少人发现,安卓机用久了以后,存储目录下就会多出很多奇奇怪怪的文件夹,这些文件夹是由各种 App 生成的,这其实是一个历史遗留问题。
安卓存储目录各种杂乱的文件夹哪来的呢?
安卓机的内部存储目录一度非常小,例如经典的 Milestone 的 ROM 只有512M,需要用 SD 卡扩展存储空间,因此安卓 App 往往会将文件保存在外部存储目录下(也就是 sdcard 目录)。而安卓在4.3版本前并没有提供外部存储目录的规范,App 习惯在 sdcard 目录中随意建立自己的文件夹,这个习惯一直保留到如今。
现在,尽管安卓建立了 sdcard 目录的存储规范,例如安卓系统规定 App 如果要在内部存储空间建立文件夹,需要建立到 / data/data / 目录下,在外部存储空间则需要建立在 / sdcard/Android/data / 目录下。然而这一规范并非是强制性的,很多 App 由于使用第三方 SDK 等各种各样的原因,视安卓的存储目录规范不见,依然在 sdcard 目录下自建文件夹,安卓存储目录的混乱由此而来。