Android 11正式发布: 刷机不再变砖?Recovery分区成为历史!

Google近日正式发布了安卓11 。Android 11 来了没错,安卓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目录下自建文件夹,安卓存储目录的混乱由此而来 。
在安卓11中,文件夹乱象终于有望得到彻底解决 。安卓11将不再允许App在sdcard建目录和文件,APP只能够往特定目录的私人文件夹写入数据 。目前某些APP已经开始为此做准备,例如新版QQ将存储目录从/sdcard/tencent/变更到了/sdcard/Android/data/com.tencent.mobileqq/Tencent/,就是为了适应安卓的存储新机制 。
【Android 11正式发布: 刷机不再变砖?Recovery分区成为历史!】 安卓11是一个从里到外都进行了重大改革的版本,它解决了安卓的很多历史问题,大家共同期待吧 。

    推荐阅读