最新的 Android 版本 Q,已经发布了 Android Q Beta 3,虽然没有正式发布,可是很多用户已经加入了测试计划,抢先体验 Android Q 的新功能。html
近期很多体验用户反馈,本身的设备升级到 Beta 3 以后,会出现触不及防的强制重启。谷歌方面已经确认,是运行了 Project Mainline 这个在 Android Q 中新加入的功能致使。谷歌在确认的同时也表示,这些问题会在以后的测试版本中修复,不会出如今正式版中。android
那什么是 Project Mainline(后文简称 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 计划。google
P-M 能够经过 Google Play,使用一种相似更新应用程序的方式,更新系统的核心组件。这类更新能够无需等待手机制造厂商的 OTA 更新,直接触达用户,同时这些 Mainline 组件,在保证开源的同事,也不容许厂商直接修改,只能由 Google 来更新升级。初期提供的 Mainlin 组件,涉及到安全、隐私、一致性三个方面。操作系统
到如今应该都知道 Project Mainline 的做用了吧?
简单来讲,Android 的碎片化致使更新困难,而一些重要的功能又迫切的须要及时更新到用户侧,例如安全类、隐私类等,谷歌开启了 Project Mainline 计划。Project Mainline 计划将系统中,重要的“模块”封装成一个个 Mainline 组件,经过 Google Play 的支持,使用一种相似更新应用的方式,在须要的时候,直接更新到用户端,以此来解决碎片化所带来的各类问题。
Proejct Mainline 让你手里的设备更安全而且兼容性更强了。
初期 Project Mainline 支持的模块,主要涉及到安全、隐私和一致性三个方向。可是这种更新方式是通用的,后期不排除可能会携带一些常规更新。
Project Mainline 包含的更新方向:
在 Android Q 中上,初始支持的组件包含:
分模块的好处就能够作到“手疼医手,脚疼医脚,哪里不对点哪里了”,让每次更新更轻量级。
前面提到 P-M 主要是经过 Google Play,以一种相似更新应用的方式去更新这些 Mainline 组件,那它究竟是如何运做的?
Mainline 组件最终以 APK 或者 APEX 文件的形式交付。APK 咱们很熟悉,而 APEX 是谷歌开发的一种新的文件格式,相似于 APK。可是其根本区别在与,APEX 在系统启动过程当中,加载的更早。
所以,之前须要成为完整操做系统更新一部分的重要安全性和性能的更新,如今能够像更新应用同样轻松的下载和安装。
为了确保 Mainline 更细不会破坏原有的功能,还为此增长了保护机制和增长的测试流程,以确保每次更新都是通过全面测试以及完善的后备方案。
Project Mainline 的本意是为了让更新更快触达用户,以提升安全性、隐私和一致性等问题。虽然如今 Android Q Beta 3 中可能会致使强制重启,可是问题已经暴露出来,后续解决它就很简单了。
可能 P-M 的工程师以为有更新,当即重启一下就能够生效了,就给用户强制重启了,固然这也可能单纯的就是一个 Bug。理论上若是不是很重要的组件更新,可能和重启应用同样简单,就不须要对系统进行重启,可是一些重要的组件更新,可能就须要重启系统来确保它生效。
不过话说回来,再严重的问题,都已经运行在用户端设备上这么久了,也不差这一天两天的。参考 iOS 系统更新的策略就挺好的,当即更新或者在半夜空闲时更新。
这种单模块的更新,可能会让开发人员和测试人员更迷惑,之前兼容性的问题,只须要问清楚手机型号和系统版本,就能够针对性的作适配。如今好了,还须要弄清楚对应的 Mainline 模块的版本号,也许有些问题已经被谷歌偷偷的修复了,可是在用户侧尚未及时更新。这时开发人员仍是蛮尴尬的,你说我改仍是不改?
你以为呢?欢迎在留言区讨论!
本文对你有帮助吗?留言、转发、收藏是最大的支持,谢谢!
references:
公众号后台回复成长『成长』,将会获得我准备的学习资料,也能回复『加群』,一块儿学习进步;你还能回复『提问』,向我发起提问。