Android 15 介绍了如何拍摄和恢复 Cuttlefish 虚拟设备的快照。拍摄 Cuttlefish 设备的快照可让您将设备状态保存在磁盘上的映像中。然后,您可以恢复快照,以将 Cuttlefish 设备恢复到之前保存的状态。
您可以在各种自动化或手动工作流程中使用快照。当执行修改设备的过程时,您可以拍摄设备快照,以确保可以将设备恢复到指定状态。例如,当运行修改设备状态的测试套件,并且可能导致后续测试出现问题或不稳定时,您可以拍摄快照,以便在测试后将设备恢复到保存状态,从而确保后续测试干净地运行。
快照有用的另一个示例工作流程是测试应用的行为。当根据一组操作测试应用的行为时,您可以在应用运行时在操作之间拍摄快照,以便您恢复到该快照,而无需从头开始。例如,如果启动游戏需要很长的启动时间,您可以在到达主菜单后拍摄快照,以便您可以将设备恢复到该状态,从而跳过启动时间。
拍摄 Cuttlefish 设备的快照
拍摄设备快照时,必须暂停 Cuttlefish 设备,以确保 Cuttlefish 设备处于稳定状态。当设备暂停时,所有 vCPU 和设备都将停止,并且所有缓冲区都会将其状态推送到虚拟机。然后,快照会将 vCPU 状态、内存和设备状态保存到磁盘上的指定目标文件夹。
拍摄快照时,不支持 VirtiosFS,并且必须将其禁用。要禁用 VirtioFS,请在运行 cvd create
或 cvd start
时传递参数 --enable_virtiofs=false
。
快照仅支持 SwiftShader (guest_swiftshader
) GPU 模式。不支持其他加速图形模式。
以下步骤介绍了启动 Cuttlefish 设备并拍摄快照的过程。
启动设备,同时禁用 VirtioFS。(然后您可以使用该设备。)
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
通过运行带有以下标志的
cvd snapshot_take
来拍摄快照--force
:如果指定的快照路径中存在文件夹,则此标志可确保删除现有文件夹,并在快照路径中创建一个包含快照的新文件夹--auto_suspend
:在拍摄快照之前暂停设备,并在拍摄快照之后恢复设备。--snapshot_path
:在其中创建包含快照的新文件夹的指定路径。
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
恢复 Cuttlefish 设备
恢复 Cuttlefish 设备快照时,必须停止拍摄快照的 Cuttlefish 实例。如果实例已停止,则无需执行进一步操作,即可恢复快照。
要恢复 Cuttlefish 设备的快照,请使用 cvd create
启动设备,并包含快照路径。如果拍摄快照的 Cuttlefish 设备的基本实例编号与当前 Cuttlefish 实例的基本实例编号不同,请使用 --base_instance_num
标志传递该基本实例编号。
cvd create --snapshot_path=PATH \
--base_instance_num=ID
暂停 Cuttlefish 设备
您可以暂停 Cuttlefish 设备,而无需拍摄快照(不使用磁盘空间来保存状态)。要暂停 Cuttlefish 设备,请运行
cvd suspend
恢复 Cuttlefish 设备
要恢复已暂停的 Cuttlefish 设备,请运行
cvd resume
验证快照/恢复功能
可以通过运行以下测试来验证快照/恢复功能
atest SnapshotTest