动态系统更新 (DSU)

动态系统更新 (DSU) 是 Android 10 中引入的一项系统功能,可执行以下操作:

  • 将新的 GSI(或其他 Android 系统映像)下载到您的设备上。
  • 创建新的动态分区。
  • 将下载的 GSI 加载到新的分区。
  • 在设备上将 GSI 作为来宾操作系统启动。

DSU 还可让您在当前系统映像和 GSI 之间轻松切换,因此您在试用 GSI 时不会面临当前系统映像受损的风险。

DSU 要求

DSU 依赖于 Android 动态分区功能,并要求 GSI 作为可信系统映像由 Google 或您的 OEM 进行签名。

DSU 是设备制造商提供的功能。有关可用性,请参阅设备制造商的支持页面。从 Android 10 Beta 版 4 开始,Google 已在 Pixel 3 和更高版本的设备上启用了 DSU。

使用 DSU 和命令行安装 GSI

本部分介绍了如何使用 DSU 和命令行安装 GSI。

启动 DSU

使用 adb 工具启动 DSU。

  1. GSI 发布页面或其他 GSI 映像服务器下载 GSI。

  2. 将 GSI 压缩为 gzip 格式。

    gzip -c system_raw.img > system_raw.gz
    
  3. 将 GSI 推送到设备。

    adb push system_raw.gz /storage/emulated/0/Download/
    
  4. 使用 adb 启动 DSU。

    adb shell am start-activity \
    -n com.android.dynsystem/com.android.dynsystem.VerificationActivity  \
    -a android.os.image.action.START_INSTALL  \
    -d file:///storage/emulated/0/Download/system_raw.gz  \
    --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1)  \
    --el KEY_USERDATA_SIZE 8589934592
    

    类似于如下的通知中会显示安装状态。

    显示 GSI 安装状态的通知

启动到 GSI

图 1. 可用于控制 DSU 的常驻通知。

DSU 安装 GSI 后,DSU 菜单将以常驻通知的形式显示在系统抽屉式通知栏中(参见图 1)。

此时,您可以执行以下某项操作:

  • 点按重启以启动到 GSI。
  • 点按舍弃以清理 GSI。

切换回设备的原始系统映像

使用 GSI 完成应用测试后,您可以执行冷重新启动,将系统重新启动到原始系统映像。

要设置在下次重新启动时使用 GSI,您可以启用粘滞模式,让 GSI 在多个启动周期内保持安装状态(直至舍弃),也可以停用粘滞模式,将其仅用于一个启动周期。

以下命令可启用粘滞模式:

adb shell gsi_tool enable

以下命令可停用粘滞模式:

adb shell gsi_tool disable
adb shell gsi_tool enable -s
adb shell gsi_tool disable

使用 DSU 和 DSU 加载器安装 GSI

Android 11 引入了 DSU 加载器,您可以在设备的开发者选项中找到该工具,有了该工具,您完全可以在系统的界面上下载、安装和管理 GSI。

如需使用 DSU 加载器安装 GSI,请在搭载 Android 11 或更高版本的设备上按以下步骤操作:

  1. 在您的设备上启用开发者选项
  2. 打开设备的“设置”应用,然后依次点按开发者选项 > DSU 加载器
  3. 选择要在设备上安装的 GSI。

    可在其中选择 GSI 的 DSU 加载器界面

  4. 接受 GSI 条款及条件。

    接受相应条款及条件后,您选择的 GSI 便会开始下载。您可以通过 DSU 通知查看下载状态。

  5. 下载完成后,点按重启以启动 GSI。

    DSU 通知,包含用于管理 GSI 的选项

  6. 如需切换回设备的原始系统映像,请从 DSU 系统通知中点按重启

    DSU 通知,包含可使用原始系统映像重新启动设备的选项

提供反馈

您的反馈有助于我们改进 DSU 及其他 GSI 功能。您可以通过提交 GSI bug 并讨论 Stack Overflow 上的主题来分享您的想法并报告 GSI 问题。