这样就有更多的时间来测试它对安卓重大变化的应用

导读 随着Android 8 0 Oreo的发布,谷歌推出了Project Treble:这是Android OS框架的主要重新配置,用于与厂商HAL和Linux内核进行通信

随着Android 8.0 Oreo的发布,谷歌推出了Project Treble:这是Android OS框架的主要重新配置,用于与厂商HAL和Linux内核进行通信。高音是一项旨在减少安卓平台版本和安全补丁碎片的主要措施,所有以安卓派开始的安卓品牌设备都需要支持高音项目。原始设备制造商和供应商通过启动通用系统映像(GSI)(来自AOSP的安卓纯库存版本)并通过供应商测试套件来测试高音兼容性。(VTS)和兼容性测试套件通用系统映像(CTS-GSI)。原来,GSI不仅可以帮助OEM软件工程师测试Treble兼容性,还可以为XDA的大型定制ROM社区打开大门。对于安卓q版,谷歌希望让GSI对另一个群体有用:应用开发者。

由于任何给定安卓平台版本的第一个稳定版本和源代码发布通常都是在8月份发布,如果不想等待,想要在真实设备上测试下一个安卓版本的开发者通常需要访问谷歌智能手机。更新你自己的硬件。然而,去年谷歌与原始设备制造商合作,将安卓P beta引入许多设备,今年他们又跟进了安卓Q beta。除了官方的安卓Q测试版,谷歌今年还发布了官方的GSI Q测试版。因此,任何拥有与Project Treble兼容的设备的开发人员都可以安装最新的Q版本,而无需等待数月的构建时间才能到达他们的设备。这种测试下一个安卓版本的新方法为开发人员提供了更多的机会,让他们有更多的时间来测试他们的应用程序,以适应安卓的重大变化。

不幸的是,目前安装GSI的方法可能很困难。它需要解锁引导程序,该程序会擦除所有用户数据和/或排尿担保,并通过闪存映像FASTBOOT协议。如果应用程序开发人员的设备甚至允许解锁引导加载程序,那么这不是一个快速简单的过程。这就是为什么在过去的几个月里,谷歌一直在研究一种新的方法来指导GSI。输入一个名为动态系统更新或DSU的新函数。

(这个功能之前是以“Live Image”、“Dynamic Android”和“Tap Android”的名义开发的,所以如果谷歌在几周或几个月内调用其他功能,不要感到惊讶。)

安卓Q中的动态系统更新

DSU函数的目标是允许开发者在不干扰当前安装的情况下引导到GSI。这意味着不需要解锁引导加载程序,也不需要擦除用户数据。因为谷歌提供了一个命令行界面和应用程序,可以通过ADB进行意向控制,安装过程大大简化。使用DSU引导GSI的外观如下:

在这个视频*中,运行安卓Q beta 3的谷歌Pixel 3 XL以GSI的身份重启。在这种环境下,应用程序开发人员可以安装和测试其应用程序的Q API兼容性。测试结束后,他们只需要重启回到设备上的常规Q beta 3软件。你基本上双启动GSI,所以你可以安全地测试应用程序!

*我们在2019年在谷歌I/O上录制了这段视频。当时,DSU还没有公开。因此,谷歌稍微修改了建立在电影Pixel 3 XL上的Q beta 3,以包括DSU支持。运行Q beta 4及更高版本的设备如果满足以下要求,则有资格支持DSU。

动态系统更新的要求

对于谷歌来说,在本质上获得双重启动和运营的任务并不容易。在谷歌DSU的测试平台Pixel 3上,需要对分区的管理进行重大改变。因此,DSU支持的第一个主要要求是设备支持动态分区。动态分区涉及一个实际的存储分区,它被划分为可以调整大小的逻辑分区,如系统、供应商、odm、oem、产品等。在GSI安装期间,通过使用现有分区中未使用的块,为新的系统分区和用户数据分区保留空间。用户数据分区。由于这些新分区的大小可能是几GB,因此DSU支持仅对逻辑分区有意义,否则设备将需要为GSI安装永久保留几GB的存储空间。

其他要求包括用于引导至恢复的ramdisk、系统或逻辑分区以及用于存储GSI元数据的元数据分区。据Project Treble负责人Iliyan Malchev介绍,支持DSU的基本要素是安卓Q的启动要求,我们不确定支持DSU所需的一切是否都是安卓Q的启动要求,但我们可以假设,即使谷歌目前不要求DSU,大多数(如果不是全部)以安卓Q启动的设备也能支持DSU。到目前为止,只有Pixel 3、Pixel 3 XL、Pixel 3a和Pixel 3 XL有动态分区,而在这些设备中,安卓Q beta 4中只有Pixel 3和Pixel 3 XL支持DSU。希望谷歌OEM能启用这个功能,因为可以简化安全性。

全测试Treble兼容性。例如,OEM软件工程师可以将GSI 放在SD卡上,以便他们可以在多个设备上快速启动以测试Treble兼容性。

动态系统更新的安全性

由于DSU本质上引入了第二种操作系统,因此Google需要确保新安装不会被篡改以破坏设备的完整性。因此,对于GSI安装,原始安装使用了相同的基本安全保护措施:Android验证启动和SELinux策略。此外,只有具有INSTALL_DYNAMIC_SYSTEM签名|特权的应用程序才能启动GSI安装,而具有MANAGE_DYNAMIC_SYSTEM签名许可权的应用程序可以启用/禁用或擦除GSI安装。这意味着只有受信任的系统级应用程序才能与DSU一起使用。

为了确保原始用户数据受到保护,Google 在Android Q中添加了额外的保护机制。称为“ 检查点 ”,该功能通过将检查点分区恢复到原始状态来防止破坏用户数据。但是,检查点不仅对DSU有用。它们还用于防止不良的项目主线 APEX模块和A / B OTA更新。(具有A / B分区的设备已经具有回滚保护,但是这些回滚需要恢复出厂数据,而用户数据检查点则不需要。)

安装GSI

如果您的设备支持Pixel 3系列等DSU,则安装GSI很容易。您首先必须确保通过以下两种方式之一启用动态系统功能标志:

然后,从Google或设备的OEM 下载最新的Android Q beta GSI 。(DSU仅允许安装由Google或OEM签署的GSI。)下载后,使用simg2img将稀疏映像转换为原始映像。使用gzip打包原始图像,然后将生成的存档复制到设备外部存储设备(例如/ data / media / 0 / Download)或实际外部存储介质(例如物理SD卡)上的某个位置。最后,出于正确的意图启动DynamicSystemInstallationService应用程序以开始安装: