Каракатица: снимок и восстановление

В Android 15 показано, как сделать снимок и восстановить снимок виртуального устройства Cuttlefish. Создание снимка устройства Cuttlefish позволяет сохранить состояние устройства в образе на диске. Затем вы можете восстановить снимок, чтобы вернуть устройство Cuttlefish в ранее сохраненное состояние.

Снимки состояния устройства можно использовать в различных автоматизированных или ручных рабочих процессах. При выполнении процедуры, изменяющей состояние устройства, можно сделать снимок состояния устройства, чтобы обеспечить возможность восстановления устройства до заданного состояния. Например, при запуске наборов тестов, изменяющих состояние устройства и потенциально способных вызвать проблемы или нестабильность в последующих тестах, можно сделать снимок состояния, чтобы восстановить устройство до сохраненного состояния после теста, гарантируя бесперебойное выполнение последующих тестов.

Еще один пример рабочего процесса, где полезны снимки экрана, — это тестирование поведения приложения. При тестировании поведения приложения на основе набора действий можно сделать снимок экрана между действиями во время работы приложения, чтобы затем восстановить его до этого состояния без необходимости перезапуска с самого начала. Например, если запуск игры занимает много времени, можно сделать снимок экрана после достижения главного меню, чтобы восстановить устройство до этого состояния, минуя время запуска.

Сделайте снимок устройства Cuttlefish

При создании снимка состояния устройства Cuttlefish необходимо приостановить его работу, чтобы убедиться в его стабильном состоянии. В режиме приостановки все виртуальные ЦП и устройства останавливаются, а все буферы передают своё состояние виртуальной машине. Затем снимок сохраняет состояние виртуальных ЦП, памяти и устройства на диск в указанную папку назначения.

VirtioFS не поддерживается и должен быть отключен при создании снимка. Чтобы отключить VirtioFS, передайте аргумент --enable_virtiofs=false при выполнении cvd create или cvd start .

Для создания снимков поддерживается только режим SwiftShader ( guest_swiftshader ) на графическом процессоре. Другие режимы ускоренной графики не поддерживаются.

Следующие шаги описывают процесс запуска устройства Cuttlefish и создания снимка состояния.

  1. Запустите устройство, отключив VirtioFS. (После этого вы сможете использовать устройство.)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Чтобы сделать снимок состояния системы, запустите cvd snapshot_take со следующими флагами:

    • --force : Если папка существует по указанному пути к снимку, этот флаг гарантирует удаление существующей папки и создание новой папки по пути к снимку, содержащему снимок.

    • --auto_suspend : Приостанавливает работу устройства до создания снимка и возобновляет работу устройства после создания снимка.

    • --snapshot_path : Указанный путь, по которому создается новая папка со снимком.

    cvd snapshot_take --force --auto_suspend \
    --snapshot_path=PATH

Восстановить устройство «Кальмар»

При восстановлении снимка устройства Cuttlefish необходимо остановить экземпляр Cuttlefish, для которого был сделан снимок. Если экземпляр уже остановлен, никаких дальнейших действий не требуется, и снимок можно восстановить.

Для восстановления снимка устройства Cuttlefish запустите устройство с помощью cvd create и укажите путь к снимку. Если базовый номер экземпляра устройства Cuttlefish, на котором был сделан снимок, отличается от базового номера экземпляра текущего экземпляра Cuttlefish, передайте этот базовый номер экземпляра с помощью флага --base_instance_num .

cvd create --snapshot_path=PATH \
--base_instance_num=ID

Подвесьте устройство «Каракатица».

Вы можете приостановить работу устройства Cuttlefish без создания снимка состояния (для сохранения состояния не используется дисковое пространство). Чтобы приостановить работу устройства Cuttlefish, выполните следующую команду:

cvd suspend

Возобновить работу устройства «Каракатица»

Чтобы возобновить работу приостановленного устройства Cuttlefish, выполните следующую команду:

cvd resume

Проверьте функцию создания снимков/восстановления.

Функцию создания снимков/восстановления можно проверить, выполнив следующий тест:

atest SnapshotTest