Cuttlefish: migawka i przywracanie

Android 15 wprowadza możliwość robienia zrzutów ekranu i przywracania zrzutów z urządzenia wirtualnego Cuttlefish. Zrobienie zrzutu ekranu urządzenia Cuttlefish pozwala zapisać stan urządzenia w postaci obrazu na dysku. Następnie możesz przywrócić zrzut, aby przywrócić urządzenie Cuttlefish do wcześniej zapisanego stanu.

Zrzutów ekranu można używać w różnych przepływach pracy automatycznych lub ręcznych. Podczas wykonywania procedury, która modyfikuje urządzenie, możesz wykonać jego migawkę, aby mieć możliwość przywrócenia go do określonego stanu. Na przykład podczas uruchamiania zestawów testów, które modyfikują stan urządzenia i mogą potencjalnie powodować problemy lub niestabilność w następnych testach, możesz wykonać migawkę, aby po teście przywrócić urządzenie do zapisanego stanu, co zapewni prawidłowe działanie kolejnych testów.

Zrzuty ekranu są przydatne również podczas testowania zachowania aplikacji. Podczas testowania zachowania aplikacji na podstawie zestawu działań możesz wykonać zrzut ekranu między działaniami, gdy aplikacja jest uruchomiona, aby można było przywrócić ten zrzut bez konieczności ponownego uruchamiania od początku. Jeśli np. uruchamianie gry zajmuje dużo czasu, możesz zrobić zrzut ekranu po otwarciu menu głównego, aby przywrócić urządzenie do tego stanu, pomijając czas uruchamiania.

Wykonywanie zrzutu ekranu urządzenia Cuttlefish

Podczas robienia zrzutu ekranu urządzenia Cuttlefish należy zawiesić urządzenie, aby zapewnić jego stabilność. Gdy urządzenie jest zawieszone, wszystkie vCPU i urządzenia są zatrzymane, a wszystkie bufory przesyłają swój stan do maszyny wirtualnej. Następnie zrzut zapisuje stan vCPU, pamięci i urządzenia na dysku w określonym folderze docelowym.

Wirtualny system plików nie jest obsługiwany i musi być wyłączony podczas wykonywania zrzutu ekranu. Aby wyłączyć VirtioFS, prześlij argument --enable_virtiofs=false podczas uruchamiania cvd create lub cvd start.

W przypadku migawek obsługiwany jest tylko tryb GPU SwiftShader (guest_swiftshader). Inne tryby przyspieszonej grafiki nie są obsługiwane.

W tych instrukcjach opisano proces uruchamiania urządzenia Cuttlefish i tworzenia zrzutu ekranu.

  1. Uruchom urządzenie, wyłączając jednocześnie funkcję VirtioFS. (możesz wtedy korzystać z urządzenia).

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Wykonaj podsumowanie danych, uruchamiając cvd snapshot_take z tymi flagami:

    • --force: jeśli na podanej ścieżce do zrzutu istnieje folder, ten flaga powoduje usunięcie istniejącego folderu i utworzenie nowego folderu na ścieżce do zrzutu zawierającej zrzut.

    • --auto_suspend: zawiesza urządzenie przed zrobieniem zrzutu ekranu i wznacza je po jego zrobieniu.

    • --snapshot_path: podana ścieżka, na której tworzony jest nowy folder ze zrzutem.

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

Przywracanie urządzenia Cuttlefish

Podczas przywracania zrzutu ekranu urządzenia Cuttlefish należy zatrzymać instancję Cuttlefish, z której został wykonany zrzut ekranu. Jeśli instancja została już zatrzymana, nie musisz nic robić i możesz przywrócić migawkę.

Aby przywrócić zrzut urządzenia Cuttlefish, uruchom urządzenie z cvd createi uwzględnij ścieżkę do zrzutu. Jeśli numer instancji podstawowej urządzenia Cuttlefish, na którym wykonano zrzut ekranu, jest inny niż numer instancji podstawowej bieżącej instancji Cuttlefish, przekaż ten numer za pomocą flagi --base_instance_num.

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

Zawieszanie urządzenia Cuttlefish

Możesz zawiesić urządzenie Cuttlefish bez robienia zrzutu ekranu (nie jest używane żadne miejsce na dysku do zapisywania stanu). Aby zawiesić urządzenie Cuttlefish, uruchom:

cvd suspend

Wznawianie działania urządzenia Cuttlefish

Aby wznowić zawieszone urządzenie Cuttlefish, uruchom:

cvd resume

Sprawdzanie funkcji zrzutu/przywracania

Funkcję migawki/przywracania można zweryfikować, wykonując ten test:

atest SnapshotTest