В Android 15 появилась возможность создания и восстановления снимка виртуального устройства Cuttlefish. Создание снимка устройства Cuttlefish позволяет сохранить состояние устройства в виде образа на диске. Затем можно восстановить снимок, чтобы вернуть устройство Cuttlefish в ранее сохранённое состояние.
Снимки можно использовать в различных автоматизированных и ручных рабочих процессах. При выполнении процедуры, изменяющей устройство, можно сделать снимок устройства, чтобы обеспечить возможность его восстановления до заданного состояния. Например, при запуске тестовых наборов, которые изменяют состояние устройства и могут потенциально вызвать проблемы или нестабильность в последующих тестах, можно сделать снимок, чтобы восстановить устройство до сохранённого состояния после теста, гарантируя корректное выполнение последующих тестов.
Другой пример рабочего процесса, где снимки полезны, — это тестирование поведения приложения. При тестировании поведения приложения на основе набора действий вы можете сделать снимок между действиями во время работы приложения, чтобы иметь возможность вернуться к этому снимку без необходимости перезапуска. Например, если запуск игры занимает много времени, вы можете сделать снимок после открытия главного меню, чтобы восстановить устройство до этого состояния, минуя время запуска.
Сделайте снимок устройства Cuttlefish
При создании снимка устройства Cuttlefish необходимо приостановить его работу, чтобы обеспечить его стабильное состояние. При приостановке устройства все виртуальные ЦП и устройства останавливаются, а все буферы передают своё состояние в виртуальную машину. Снимок затем сохраняет состояние виртуального ЦП, памяти и устройства на диске в указанной папке назначения.
VirtiosFS не поддерживается и должен быть отключен при создании снимка. Чтобы отключить VirtioFS, передайте аргумент --enable_virtiofs=false
при запуске cvd create
или cvd start
.
Для снимков поддерживается только режим GPU SwiftShader ( guest_swiftshader
). Другие ускоренные графические режимы не поддерживаются.
Следующие шаги описывают процесс запуска устройства 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