让 Android Q 强制重启的 Project Mainline,究竟是什么?

一. 序
最新的 Android 版本 Q,已经发布了 Android Q Beta 3,尽管没有正式发布,但是不少客户已经加入了测试计划,抢先体验 Android Q 的新功能。
近期不少体验客户反馈,自己的设施更新到 Beta 3 之后,会出现触不及防的强制重启。谷歌方面已经确认,是运行了 Project Mainline 这个在 Android Q 中新加入的功能导致。谷歌在确认的同时也表示,这些问题会在之后的测试版本中修复,不会出现在正式版中。

那什么是 Project Mainline(后文简称 P-M) 呢?它是干什么的?又处理了什么问题?
二. Project Mainline
2.1 P-M 处理什么问题?
Android 能有今天的发展,得益于它系统源码的开源,又正是由于它的开源,导致碎片化严重。以至于在谷歌高速迭代 Android 系统版本的过程中,不少客户在吐槽,Q 来了,O 还没用上呢。
而碎片化又会导致各种问题,例如安全,隐私等问题。往往在系统中暴露出来一个问题,Android 团队修复它,还需要等待漫长的时间,才能最终由厂商同步到客户端。

中间环节太多,必然导致升级的缓慢,往往一个安全升级要经过半年甚至一年才能最终被厂商更新到客户端,同时这些步骤中,还有少量是有时间重叠的。

上图表示了谷歌和芯片制造商以及手机厂商之间的升级时间,这各个阶段之间的任何重叠,都可能导致升级的失效。这就导致对于手机厂商而言,使用较旧的但是更稳固的 Android 版本,是更安全的做法。
为理解决这些问题,从 Android P 开始加入的 Project Treble 计划,它就是现在 Android Q 中 Project Mainline 的基础。通过 P-M 的支持,简化并加快了 Android 生态系统的更新升级。

上图为 Project Treble 的计划理想升级时间,在 Android Q 中,谷歌发现与系统级的升级相比,以“板块”为粒度的升级,是一种更有效的方式,这就引入了 Project Mainline 计划。
P-M 可以通过 Google Play,使用一种相似升级应用程序的方式,升级系统的核心组件。这类升级可以无需等待手机制造厂商的 OTA 升级,直接触达客户,同时这些 Mainline 组件,也是开源的。初期提供的 Mainlin 组件,涉及到安全、隐私、一致性三个方面。

到现在应该都知道 Project Mainline 的作用了吧?
简单来说,Android 的碎片化导致升级困难,而少量重要的功能又迫切的需要及时升级到客户侧,例如安全类、隐私类等,谷歌开启了 Project Mainline 计划。Project Mainline 计划将系统中,重要的“板块”封装成一个个 Mainline 组件,通过 Google Play 的支持,使用一种相似升级应用的方式,在需要的时候,直接升级到客户端,以此来处理碎片化所带来的各种问题。
Proejct Mainline 让你手里的设施更安全并且兼容性更强了。
2.2 P-M 升级了那些东西?
初期 Project Mainline 支持的板块,主要涉及到安全、隐私和一致性三个方向。但是这种升级方式是通用的,后期不排除可能会携带少量常规升级。

Project Mainline 包含的升级方向:
安全性:可以对关键的安全漏洞,提供更快的安全修复程序。例如媒体组件漏洞(占最近修补漏洞的近 40%)。
隐私:隐私一直是 Android 关心的焦点,并且在版本升级中,一直投入大量的精力来更好的保护客户数据并提高隐私标准。最主要的体现是对权限系统进行升级更新,更好的保护客户数据。
一致性:一致性主要影响设施稳固性、兼容性和开发人员使用 API 的一致性问题。
在 Android Q 中上,初始支持的组件包含:
安全性:媒体编解码器、媒体框架组件、DNS 解析器、Conscrypt。
隐私:文档 UI、权限控制器、ExtServices。
一致性:时区数据、ANGLE、板块元数据、网络组件、登录组件、网络权限配置。
分板块的好处即可以做到“手疼医手,脚疼医脚,哪里不对点哪里了”,让每次升级更轻量级。
2.3 P-M 是如何运作的?
前面提到 P-M 主要是通过 Google Play,以一种相似升级应用的方式去升级这些 Mainline 组件,那它究竟是如何运作的?
Mainline 组件最终以 APK 或者者 APEX 文件的形式交付。APK 我们很熟习,而 APEX 是谷歌开发的一种新的文件格式,相似于 APK。但是其根本区别在与,APEX 在系统启动过程中,加载的更早。
因而,以前需要成为完整操作系统升级一部分的重要安全性和性能的升级,现在可以像升级应用一样轻松的下载和安装。

为了确保 Mainline 更细不会破坏原有的功能,还为此添加了保护机制和添加的测试流程,以确保每次升级都是经过全面测试以及完善的后备方案。
三. 小结时刻
Project Mainline 的本意是为了让升级更快触达客户,以提高安全性、隐私和一致性等问题。尽管现在 Android Q Beta 3 中可能会导致强制重启,但是问题已经暴露出来,后续处理它就很简单了。
可能 P-M 的工程师觉得有升级,立即重启一下即可以生效了,就给客户强制重启了,当然这也可能单纯的就是一个 Bug。理论上假如不是很重要的组件升级,可能和重启应用一样简单,就不需要对系统进行重启,但是少量重要的组件升级,可能就需要重启系统来确保它生效。
不过话说回来,再严重的问题,都已经运行在客户端设施上这么久了,也不差这一天两天的。参考 iOS 系统升级的策略就挺好的,立即升级或者者在半夜空闲时升级。
这种单板块的升级,可能会让开发人员和测试人员更迷惑,以前兼容性的问题,只要要问清楚手机型号和系统版本,即可以针对性的做适配。现在好了,还需要弄清楚对应的 Mainline 板块的版本号,也许有些问题已经被谷歌偷偷的修复了,但是在客户侧还没有及时升级。这时开发人员还是蛮尴尬的,你说我改还是不改?
你觉得呢?欢迎在留言区探讨!
最后文末放上一个技术交流群:Android架构设计(185873940)
群内有许多技术大牛,有任何疑问,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~
再推荐一篇文章,具体的架构视频,面试专题,学习笔记都在这篇文章中:“寒冬未过”,阿里P9架构分享Android必备技术点,让你offer拿到手软!
偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流探讨啊!
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 让 Android Q 强制重启的 Project Mainline,究竟是什么?