Sotong: Mengambil gambar dan memulihkan

Android 15 memperkenalkan cara mengambil snapshot dan memulihkan snapshot perangkat virtual Cuttlefish. Dengan mengambil snapshot perangkat Cuttlefish, Anda dapat menyimpan status perangkat dalam gambar di disk. Kemudian, Anda dapat memulihkan snapshot untuk menampilkan perangkat Cuttlefish ke status yang disimpan sebelumnya.

Anda dapat menggunakan snapshot dalam berbagai alur kerja otomatis atau manual. Saat melakukan prosedur yang mengubah perangkat, Anda dapat mengambil snapshot perangkat untuk memastikan Anda dapat memulihkan perangkat kembali ke status yang ditentukan. Misalnya, saat menjalankan rangkaian pengujian yang mengubah status perangkat dan berpotensi menyebabkan masalah atau ketidakstabilan dalam pengujian berikut, Anda dapat mengambil snapshot sehingga dapat memulihkan perangkat ke status tersimpan setelah pengujian, untuk memastikan bahwa pengujian berikutnya berjalan dengan baik.

Contoh lain alur kerja yang memanfaatkan snapshot adalah saat menguji perilaku aplikasi. Saat menguji perilaku aplikasi berdasarkan serangkaian tindakan, Anda dapat mengambil snapshot di sela-sela tindakan saat aplikasi berjalan agar Anda dapat memulihkan ke snapshot tersebut tanpa harus memulai ulang dari awal. Misalnya, jika peluncuran game memiliki waktu pemunculan yang lama, Anda dapat mengambil snapshot setelah mencapai menu utama sehingga Anda dapat memulihkan perangkat ke status tersebut, dengan melewati waktu kemunculan.

Mengambil snapshot perangkat Cuttlefish

Saat mengambil snapshot perangkat, perangkat Cuttlefish harus ditangguhkan untuk memastikan perangkat Cuttlefish dalam status stabil. Saat perangkat ditangguhkan, semua vCPU dan perangkat dihentikan, dan semua buffering mendorong statusnya ke VM. Snapshot kemudian menyimpan status vCPU, memori, dan status perangkat ke disk di folder tujuan tertentu.

VirtiosFS tidak didukung dan harus dinonaktifkan saat mengambil snapshot. Untuk menonaktifkan VirtioFS, teruskan argumen --enable_virtiofs=false saat menjalankan cvd create atau cvd start.

Hanya mode GPU SwiftShader (guest_swiftshader) yang didukung untuk snapshot. Mode grafis akselerasi lainnya tidak didukung.

Langkah-langkah berikut menjelaskan proses meluncurkan perangkat Cuttlefish dan mengambil snapshot.

  1. Meluncurkan perangkat, sambil menonaktifkan VirtioFS. (Anda kemudian dapat menggunakan perangkat.)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Ambil snapshot dengan menjalankan cvd snapshot_take dengan flag berikut:

    • --force: Jika folder ada di jalur snapshot yang ditentukan, flag ini memastikan bahwa folder yang ada telah dihapus, dan folder baru dibuat di jalur snapshot yang berisi snapshot tersebut

    • --auto_suspend: Menangguhkan perangkat sebelum snapshot diambil dan melanjutkan perangkat setelah snapshot diambil.

    • --snapshot_path: Jalur yang ditentukan tempat folder baru dibuat dengan snapshot.

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

Memulihkan perangkat Cuttlefish

Saat memulihkan snapshot perangkat Cuttlefish, instance Cuttlefish yang snapshot-nya diambil harus dihentikan. Jika instance sudah berhenti, tidak ada tindakan lebih lanjut yang diperlukan dan snapshot dapat dipulihkan.

Untuk memulihkan snapshot perangkat Cuttlefish, luncurkan perangkat dengan cvd create dan sertakan jalur snapshot. Jika nomor instance dasar perangkat Cuttlefish tempat snapshot diambil berbeda dengan nomor instance dasar dari instance Cuttlefish saat ini, teruskan nomor instance dasar tersebut menggunakan flag --base_instance_num.

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

Menangguhkan perangkat Cuttlefish

Anda dapat menangguhkan perangkat Cuttlefish tanpa mengambil snapshot (tidak ada ruang disk yang digunakan untuk menyimpan status). Untuk menangguhkan perangkat Cuttlefish, jalankan:

cvd suspend

Melanjutkan perangkat Cuttlefish

Untuk melanjutkan perangkat Cuttlefish yang ditangguhkan, jalankan:

cvd resume

Memvalidasi fitur Snapshot/Pulihkan

Fitur Ringkasan/Pemulihan dapat divalidasi dengan menjalankan pengujian berikut:

atest SnapshotTest