让最新的 Android Q Beta 3 强制重启的 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 组件,在保证开源的同事,也不允许厂商直接修改,只能由 Google 来更新升级。初期提供的 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 模块的版本号,也许有些问题已经被谷歌偷偷的修复了,但是在用户侧还没有及时更新。这时开发人员还是蛮尴尬的,你说我改还是不改?

你觉得呢?欢迎在留言区讨论!

本文对你有帮助吗?留言、转发、收藏是最大的支持,谢谢!

references:


公众号后台回复成长『成长』,将会得到我准备的学习资料,也能回复『加群』,一起学习进步;你还能回复『提问』,向我发起提问。

原文地址:https://www.cnblogs.com/plokmju/p/android_project_mainline.html

时间: 2024-08-30 08:54:29

让最新的 Android Q Beta 3 强制重启的 Project Mainline,到底是什么?的相关文章

华为终端开放实验室Android P Beta 4测试能力上线

7月26日,Android P Beta 4发布(即Android P DP5),此版本为开发者最后一个预览版本,也预示着Android P正式版即将与大家见面. 为保证开发者在正式版本来临前做好充分的开发和测试准备,实现广大应用在Android P中顺利适配,华为终端开放实验室针对Android P Beta 4的兼容性测试和远程真机调试功能已正式上线. 作为 Android P 的候选版本,Beta 4 包含最终版的系统行为以及自 Beta 2 开始使用的官方 Android P API (

关于Android Q的命名的猜想

猜测Android Q的命名 Google在两天前悄然更新了Android Q的第二个beta版本,在即将到来的Google I/O 2019大会上,正式版的Android Q也即将正式发布. 在此之前我们不妨来猜测一下Google会怎么对Android Q进行命名. 众所周知,自从Android的第一个正式版本Android 1.5以来,Google一直使用食物(甜点)的名字来进行命名.分别是: Android 1.5 Cupcake 纸杯蛋糕 Android 1.6 Donut 甜甜圈 An

Windows 中下载 Android Q 源码

1.  安装软件 1.1.  安装 git A.git官网下载:https://git-scm.com/downloads/ 安装git到如下路径 C:/Program Files/Git B.图形化工具:https://tortoisegit.org/ 1.2.  安装 Python python官网下载:https://www.python.org/downloads/ 安装python到如下路径 C:/Program Files/python 2. 下载源码 2.1. 克隆源代码仓库 在

最新的Android Sdk 使用Ant多渠道批量打包

实例工程.所需的文件都在最后的附件中.    今天花费了几个小时,参考网上的资料,期间遇到了好几个问题, 终于实现了使用Ant批量多渠道打包,现在,梳理一下思路,总结使用Ant批量多渠道打包的方法:1.  下载安装Ant,不是使用Androis sdk 或者 Eclipse中的Ant,而是去官网下载完整的Ant.官网:http://ant.apache.org/ 1) 解压Ant,比如解压到D:\Android\Ant2) 我的电脑->属性->高级->环境变量 3) 系统变量新建ANT_

V小米Android Q适配计划公布:怒赞

6月14日消息,MIUI管理员在论坛发布“MIUI关于Android Q升级适配计划的通知”. 目前计划适配机型有小米9.红米K20 Pro.小米8.小米8透明探索版.小米8屏幕指纹版.小米MIX 2S.小米MIX 3.红米K20.红米Note 7.红米Note 7 Pro和小米9 SE等. 其中红米Note 7和红米Note 7 Pro预计2019年Q1内测(开发版),其它机型预计2019年Q4内测.小米公布Android Q适配计划:预计2019年Q4内测 MIUI官方表示,以上是已经开始适

Android Q 正式命名为 Android 10

根据官方博文,谷歌已经公布了 Android Q 的名称,它并不是想以前一样,以甜食命名,也不是以任何以字母 Q 开头来命名,而是简单称它为 Android 10. 该公司表示,它正在改变其发布版本的命名方式,以推动更大程度的可访问性.该公司写道: 这些年来,我们听到的很多反馈,我们的命名并不总是被全球社会中的每个人所理解. 谷歌说,改变命名的实际原因并不是 Q 很难找到实际的甜点名称,而是甜点不是很具包容性,比如馅饼并不总是甜点,棒棒糖在某些地区很难发音.棉花糖在很多地方甚至都不算甜点. 换句

android Q(10) 拍照相机 照片存入失败

android Q对于文件读写引入了新特性,在这个版本中,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE均受到了限制,无法再像之前的版本直接获取到文件.如果希望恢复之前的权限逻辑,可以在manifest文件中设置: android:requestLegacyExternalStorage="true" 参考https://blog.csdn.net/Anhe0901/article/details/103018915 原文地址:https://

Windows下Android Studio长时间停留在Building "Project Name" Gradle project info画面的解决方法

问题描述: 创建好一个Android项目后,Android Studio长时间停留在Building [Project Name] Gradle project info画面不动. 原因: 此时Android Studio在下载gradle-X.XX-all.zip文件,但是下载过程中经常中断,导致重来(不支持断点续传?). 解决办法: 1. 首先查看gradle版本,路径:C:\Users\[用户名]\.gradle\wrapper\dists\gradle-X.XX-all 2. 然后去Gr

android:关于主工程和library project

转载自:  http://blog.sina.com.cn/s/blog_a3b9b9040101lco3.html 在Github上下载了Android开源项目 Quick News的源码, 其中使用到了第三方项目框架 vitamio, 在下载的源码导入到IDE后, 发现凡是引用vitamio的文件都会报错, 在不知如何解决该问题的时候, 又回到Github该项目的页面, 认真看了看该项目的介绍, 发现了这句描述"QuickNews is a run project and vitamio i