Mürekkepbalığı: Anlık görüntü ve geri yükleme

Android 15, Cuttlefish sanal cihazının anlık görüntüsünü alma ve geri yükleme yöntemini sunar. Cuttlefish cihazının anlık görüntüsünü alarak cihazın durumunu diskteki bir resme kaydedebilirsiniz. Ardından, Cuttlefish cihazını daha önce kaydedilmiş duruma getirmek için anlık görüntüyü geri yükleyebilirsiniz.

Anlık görüntüleri çeşitli otomatik veya manuel iş akışlarında kullanabilirsiniz. Cihazı değiştiren bir prosedür uygularken, cihazı belirli bir duruma geri yükleyebilmek için cihazın anlık görüntüsünü alabilirsiniz. Örneğin, cihazın durumunu değiştiren ve sonraki testlerde sorunlara veya dengesizliklere neden olabilecek test paketlerini çalıştırırken, testten sonra cihazı kaydedilmiş bir duruma geri yükleyebilmek için anlık görüntü alabilirsiniz. Böylece sonraki testlerin sorunsuz bir şekilde çalışmasını sağlayabilirsiniz.

Anlık görüntülerin yararlı olduğu bir diğer örnek iş akışı da uygulamanın davranışını test etmektir. Bir dizi işleme dayalı olarak uygulamanın davranışını test ederken, uygulamayı baştan başlatmak zorunda kalmadan anlık görüntüye geri dönmenizi sağlamak için uygulama çalışırken işlemler arasında anlık görüntü alabilirsiniz. Örneğin, bir oyunun başlatılması uzun sürüyorsa ana menüye ulaştıktan sonra anlık görüntü alabilirsiniz. Böylece cihazı bu duruma geri yükleyerek başlatma süresini atlayabilirsiniz.

Cuttlefish cihazının anlık görüntüsünü alma

Bir cihazın anlık görüntüsü alınırken Cuttlefish cihazının kararlı durumda olduğundan emin olmak için Cuttlefish cihazı askıya alınmalıdır. Cihaz askıya alındığında tüm sanal CPU'lar ve cihazlar durdurulur ve tüm arabellekler durumlarını sanal makineye gönderir. Anlık görüntü, vCPU durumunu, belleği ve cihaz durumunu belirtilen hedef klasördeki diske kaydeder.

VirtiosFS desteklenmez ve anlık görüntü alınırken devre dışı bırakılmalıdır. VirtioFS'yi devre dışı bırakmak için cvd create veya cvd start çalıştırılırken --enable_virtiofs=false bağımsız değişkenini iletin.

Anlık görüntüler için yalnızca SwiftShader (guest_swiftshader) GPU modu desteklenir. Diğer hızlandırılmış grafik modları desteklenmez.

Aşağıdaki adımlarda, Cuttlefish cihazı başlatma ve anlık görüntü alma süreci açıklanmaktadır.

  1. VirtioFS'yi devre dışı bırakırken bir cihazı başlatın. (Ardından cihazı kullanabilirsiniz.)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Aşağıdaki işaretlerle cvd snapshot_take komutunu çalıştırarak anlık görüntü alın:

    • --force: Belirtilen anlık görüntü yolunda bir klasör varsa bu işaret, mevcut klasörün silinmesini ve anlık görüntüyü içeren anlık görüntü yolunda yeni bir klasör oluşturulmasını sağlar.

    • --auto_suspend: Anlık görüntü alınmadan önce cihazı askıya alır ve anlık görüntü alındıktan sonra cihazı devam ettirir.

    • --snapshot_path: Anlık görüntünün bulunduğu yeni klasörün oluşturulduğu belirtilen yol.

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

Cuttlefish cihazı geri yükleme

Bir Cuttlefish cihaz anlık görüntüsü geri yüklenirken anlık görüntünün alındığı Cuttlefish örneği durdurulmalıdır. Örnek zaten durdurulmuşsa başka bir işlem yapmanız gerekmez ve anlık görüntü geri yüklenebilir.

Bir Cuttlefish cihazının anlık görüntüsünü geri yüklemek için cvd create ile bir cihaz başlatın ve anlık görüntü yolunu ekleyin. Anlık görüntünün alındığı Cuttlefish cihazının temel örnek numarası, mevcut Cuttlefish örneğinin temel örnek numarasından farklıysa --base_instance_num işaretini kullanarak temel örnek numarasını iletin.

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

Cuttlefish cihazını askıya alma

Anlık görüntü almadan bir Cuttlefish cihazını askıya alabilirsiniz (durumu kaydetmek için disk alanı kullanılmaz). Bir Cuttlefish cihazını askıya almak için şu komutu çalıştırın:

cvd suspend

Cuttlefish cihazını devam ettirme

Askıya alınmış bir Cuttlefish cihazını devam ettirmek için şu komutu çalıştırın:

cvd resume

Anlık görüntü/geri yükleme özelliğini doğrulama

Anlık Görüntü/Geri Yükleme özelliği, aşağıdaki test çalıştırılarak doğrulanabilir:

atest SnapshotTest