谷歌最近正式发布了Android 11。 这些新功能无疑对于最新一代的Android系统非常有价值。 但是,由于在中国经常对Android本机功能进行各种神奇的更改,因此对家庭用户的影响是有限的。 Android 11对家庭生态的最大影响可能是由于鲜有提及的变化。
没错,安卓11的底层又有了不少大变化!所带来的巨变,会深刻影响广大用户,今天就一起来聊聊吧。
刷机不再变砖?Recovery 分区成为历史!
如果你是一名安卓刷机玩家,一定知道 Recovery 这个名词。这是安卓系统中,用于恢复系统的模式,无论是厂商官方升级系统,还是玩家刷入第三方 ROM,通常需要通过 Recovery 来进行。在安卓机中,还专门划分了一个分区来放置 Recovery,但这在安卓11中要成为历史了。
传统的 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 目录下自建文件夹,安卓存储目录的混乱由此而来。
在安卓11中,文件夹乱象终于有望得到彻底解决。安卓11将不再允许 App 在 sdcard 建目录和文件,APP 只能够往特定目录的私人文件夹写入数据。目前某些 APP 已经开始为此做准备,例如新版 QQ 将存储目录从 / sdcard/tencent / 变更到了 / sdcard/Android/data/com.tencent.mobileqq/Tencent/,就是为了适应安卓的存储新机制。