动态系统更新 (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 -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
    

    类似于此的通知会显示安装状态。

    Notification showing GSI installation in progress

启动 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 加载程序,这是一种在设备的开发者选项中可用的工具,它允许您完全通过系统的 UI 下载、安装和管理 GSI。

要在运行 Android 11 或更高版本的设备上使用 DSU 加载程序安装 GSI,请按照以下步骤操作

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

    DSU loader interface for selecting a GSI

  4. 同意 GSI 的条款和条件。

    同意条款和条件后,您选择的 GSI 将开始下载。您可以通过 DSU 通知检查下载状态。

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

    DSU notification with options for managing the GSI

  6. 当您要切换回设备的原始系统映像时,点击 DSU 系统通知中的重新启动

    DSU notification with an option that lets you reboot the device using the
original system image

提供反馈

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