Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变


[PConline 杂谈]Google近日正式发布了安卓11 。 对于这个最新一代安卓系统 , 所带来的新功能新特性 , 自然颇具价值 。 不过考虑到国内往往会对原生安卓的功能进行种种魔改 , 其实对于国内用户来说 , 影响有限 。 安卓11对国内生态影响最大的 , 可能还是一些底层变化 , 这也较少为人提及 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

Android 11 来了
没错 , 安卓11的底层又有了不少大变化!所带来的剧变 , 会深刻影响广大用户 , 今天就一起来聊聊吧 。
刷机不再变砖?Recovery分区成为历史!
如果你是一名安卓刷机玩家 , 一定知道Recovery这个名词 。 这是安卓系统中 , 用于恢复系统的模式 , 无论是厂商官方升级系统 , 还是玩家刷入第三方ROM , 通常需要通过Recovery来进行 。 在安卓机中 , 还专门划分了一个分区来放置Recovery , 但这在安卓11中要成为历史了 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

刷机玩家再熟悉不过的Recovery
传统的Recovery升级模式 , 如果写入System系统分区的数据有误 , 那么机器可能就无法启动 , 刷机玩家应该很熟悉这一类“变砖”的情况 , 甚至厂商OTA偶尔也会“变砖” 。 要如何避免?事实上 , 近年的新安卓机使用A/B分区机制 , 很多安卓机已经不需要Recovery来引导升级 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

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)分离 , 此后厂商可以为设备单独推送新版安卓 , 而不需要重新适配驱动 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

Project Treble将Google的安卓系统框架和硬件供应商提供的驱动作了分离
Project Treble大大简化了安卓系统的升级流程 , 但这还不够 。 在安卓10当中 , Google推行了Project Mainline , 将系统进一步细分模块化 。 在安卓10中 , 14个系统组件被Mainline化 , 媒体解码器、权限控制器、网络组件等系统组件 , 都可以像普通App一样 , 通过应用商店来更新——很多朋友发现 , 今年安卓机的GPU驱动竟然能够独立更新 , 就得益于此 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

高通宣布GPU驱动可以单独更新
在安卓11中 , Google又进一步对安卓组件进行细分 , 安卓的组件模块达到了20个之多 , 安卓的系统维护将会变得前所未有地灵活 。 不仅如此 , Google还将改制推行到了系统内核当中 , 安卓的Linux系统内核升级将会变得更加灵活 。
在当前的安卓系统中 , Linux系统内核升级大体需要经历三个步骤 。 首先 , Google选定一个Linux LTS版本作为安卓内核 , 打上安卓运行所需要的Patch;接着 , Google将这个内核提交给高通等SoC供应商 , 供应商再次将其打造成为适配SoC的内核;最后 , 三星等设备商再让内核适配不同的元器件 , 再次为内核打上各种Patch , 让内核成为真正可以在安卓机上运行的版本 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

传统的Android系统Linux内核升级流程 , 需要经由重重环节 , 非常麻烦
由于步骤繁琐 , 因此当前的安卓机一旦出厂 , Linux内核就很少变动 , 即使是Google旗下的Pixel设备 , 内核也依然只是较为老旧的Linux 4.14 。
而在安卓11中 , 情况有所变化 , Google将系统内核进行了模块化修改 , 内核被分成了Generic Kernel Image(GKI)和其他GKI模块 。 如果想要升级Linux版本 , Google可以直接面向安卓机推送GKI , 手机直接升级GKI即可 , 再也不需要经历从SoC厂商到手机设备厂商的繁琐步骤 。
Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

Android 11开始 , 内核进行了模块化 , 一个GKI内核可以通用于市面上的大量安卓机
据了解 , 安卓11的这一特性 , 在内核版本高于Linux 5.4以上的设备上 , 是要求强制执行的 。 可以说 , 如果安卓11的设备出厂内核版本就是Linux 5.4以上 , 那它有可能会是史上最容易升级的安卓 。
安卓存储目录文件夹乱象彻底解决?
相信不少人发现 , 安卓机用久了以后 , 存储目录下就会多出很多奇奇怪怪的文件夹 , 这些文件夹是由各种App生成的 , 这其实是一个历史遗留问题 。

Android系统|安卓11正式发布!谈谈安卓11不为人知的剧变
本文插图

安卓存储目录各种杂乱的文件夹哪来的呢?
安卓机的内部存储目录一度非常小 , 例如经典的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正式发布!谈谈安卓11不为人知的剧变】除了上文所提到的 , 安卓11还有很多非常有意义的更新 , 例如更强大的隐私保护、改进的通知系统等等 , 这里就不一一列举了 。 总的来说 , 安卓11是一个从里到外都进行了重大改革的版本 , 它解决了安卓的很多历史问题 , 大家共同期待吧 。


    推荐阅读