动态系统更新 (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 功能标记
在使用 DSU 之前,请确保已启用相应的功能标记。您可以通过以下某种方法启用该标记:
- 在使用 userdebug Android build 的设备上,您可以在设置 > 系统 > 开发者选项 > 功能标记 > settings_dynamic_system 中启用该功能。
在其他设备上,请使用以下
adb
命令:adb shell setprop persist.sys.fflag.override.settings_dynamic_system true
启动 DSU
启用此功能后,请使用 adb
工具启动 DSU。
从 GSI 发布页面或其他 GSI 映像服务器下载 GSI。
将 GSI 压缩为 gzip 格式。
gzip -c system_raw.img > system_raw.gz
将 GSI 推送到设备。
adb push system_raw.gz /storage/emulated/0/Download/
使用
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

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 或更高版本的设备上按以下步骤操作:
- 在您的设备上启用开发者选项。
- 打开设备的“设置”应用,然后依次点按开发者选项 > DSU 加载器。
选择要在设备上安装的 GSI。
接受 GSI 条款及条件。
接受相应条款及条件后,您选择的 GSI 便会开始下载。您可以通过 DSU 通知查看下载状态。
下载完成后,点按重启以启动 GSI。
如需切换回设备的原始系统映像,请从 DSU 系统通知中点按重启。
提供反馈
您的反馈有助于我们改进 DSU 及其他 GSI 功能。您可以通过以下方法分享您的想法和报告 GSI 问题:提交 GSI 错误、讨论有关 Stack Overflow 的话题以及在 Reddit 上向 GSI 页面投稿。