一. 序

最新的 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:


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

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

  1. Android Q Beta 6 终极测试版发布!

    前言 当今手机市场可谓是百花齐放,但手机系统却屈指可数,其中Android和iOS就占据了整个手机系统市场的99%,单单Android就占据了整个手机系统市场的86%,可谓是占据绝对优势.     其 ...

  2. Android P Beta发布!最新版本抢先体验!

    在不久前结束的谷歌I/O开发者大会上,谷歌公布了下一个版本的 Android,也就是 Android P 的 beta 版本.Android P 将 AI 定位为操作系统的核心,并侧重于提供智能且简洁 ...

  3. 【Android Studio安装部署系列】三十七、从Android Studio3.2升级到Android Studio3.4【以及创建Android Q模拟器】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 保持Android Studio开发环境的最新版本. 下载Android Studio3.4 使用Android Studio自带的 ...

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

    7月26日,Android P Beta 4发布(即Android P DP5),此版本为开发者最后一个预览版本,也预示着Android P正式版即将与大家见面. 为保证开发者在正式版本来临前做好充分 ...

  5. Android Q 兼容那些事

    文章微信公众号「AndroidTraveler」首发 5 月 20 号参加了 Android Q Labs,因此本篇说一说会议的部分内容以及自己的一些想法. 会议主要是加深开发者对 Android Q ...

  6. Windows 中下载 Android Q 源码

      1.  安装软件 1.1.  安装 git A.git官网下载:https://git-scm.com/downloads/ 安装git到如下路径 C:/Program Files/Git B.图 ...

  7. [译]ANDROID 11: BETA 计划

    当我们开始计划 Android 11 的时候,我们没有预料到这些变化会发生在我们所有人身上,几乎遍及世界上的每一个地区. 这些挑战要求我们保持灵活性,寻找新的合作方式,特别是与我们的开发者社区合作. ...

  8. 10本最新的Android开发电子书免费下载

    最新的Android开发电子书大集合,免费下载! 1.The Business of Android Apps Development, 2nd Edition http://ebook.goodfa ...

  9. Android开发中如何强制横屏和强制竖屏设置

    Android开发中如何强制横屏和强制竖屏设置 强制横屏设置: 按照下面代码示例修改Activity的onResume方法 @Override protected void onResume() { ...

随机推荐

  1. POJ1088(记忆化搜索)

    经典记忆化搜索题目.当 从每个点一次进行搜索时要采用 记忆化搜索 #include"cstdio" #include"algorithm" using name ...

  2. JVM插码之三:javaagent介绍及javassist介绍

    本文介绍一下,当下比较基础但是使用场景却很多的一种技术,稍微偏底层点,就是字节码插庄技术了...,如果之前大家熟悉了asm,cglib以及javassit等技术,那么下面说的就很简单了...,因为下面 ...

  3. smbpasswd和pdbedit

    samba用户管理: smbpasswd :smbpasswd命令属于samba套件,能够实现添加或删除samba用户和为用户修改密码. smbpasswd [options] USERNAME -a ...

  4. 电脑当路由使用(目前只在win7上用过)

    前提:电脑有无线网卡,并打开了无线 第一步使用管理员权限运行cmd.exe 1.执行如下命令 netsh wlan set hostednetwork mode=allow ssid=myWifi k ...

  5. LAMP 1.8默认虚拟主机

    默认虚拟主机是为了解决别人域名恶心绑定自己的服务器ip,可导致服务器上的网站排名靠后,即干扰seo优化 我们访问指定的两个网站可以直接访问,ip也可以访问 打开配置文件 vim /usr/local/ ...

  6. day01_虚拟机与主机之间ip配置

       虚拟机1: centos_ node1 虚拟机2:centos_node2 宿主主机虚拟机ip配置: vmnet1 来自为知笔记(Wiz)

  7. 进击的菜鸟问题1(设置checkbox全选)

    问题:设置页面标签属性时,常常使用jquery.attr("","");在设置checkbox属性时,会出现操作设置checkbox属性后,无法清除,导致第二次 ...

  8. [51nod1106]质数检测

    解题关键: 根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可.但我们有更好的办法.先找一个数m,使m的平方大于n,再用<=m的质数去除n(n即为被除数), ...

  9. Java基础——深入剖析Java中的装箱和拆箱

    (转自:http://www.cnblogs.com/dolphin0520/p/3780005.html) 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若 ...

  10. <c和指针>学习笔记6输入输出函数

    1 错误报告 (1)perror函数 void perror(char const *message) error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户 ...