In Android 15 wird beschrieben, wie Sie einen Snapshot eines virtuellen Cuttlefish-Geräts erstellen und wiederherstellen. Wenn Sie einen Snapshot eines Cuttlefish-Geräts erstellen, können Sie den Zustand des Geräts in einem Image auf dem Laufwerk speichern. Anschließend können Sie den Snapshot wiederherstellen, um ein Cuttlefish-Gerät in den zuvor gespeicherten Zustand zu versetzen.
Sie können Snapshots in verschiedenen automatisierten oder manuellen Arbeitsabläufen verwenden. Wenn Sie eine Prozedur ausführen, die das Gerät ändert, können Sie einen Snapshot des Geräts erstellen, um es in einen bestimmten Zustand zurückversetzen zu können. Wenn Sie beispielsweise Testsuites ausführen, die den Status des Geräts ändern und möglicherweise Probleme oder Instabilitäten in den folgenden Tests verursachen können, können Sie einen Snapshot erstellen, um das Gerät nach einem Test in einen gespeicherten Zustand zurückzuversetzen. So wird sichergestellt, dass nachfolgende Tests reibungslos ausgeführt werden.
Ein weiterer Arbeitsablauf, bei dem Snapshots nützlich sind, ist das Testen des Verhaltens einer App. Wenn Sie das Verhalten einer App anhand einer Reihe von Aktionen testen, können Sie während der Ausführung der App einen Snapshot zwischen den Aktionen erstellen, um zu diesem Snapshot zurückzukehren, ohne von vorn beginnen zu müssen. Wenn das Starten eines Spiels beispielsweise lange dauert, können Sie einen Snapshot erstellen, nachdem Sie das Hauptmenü erreicht haben. So können Sie das Gerät in diesen Zustand zurückversetzen und die Startzeit überspringen.
Snapshot eines Cuttlefish-Geräts erstellen
Wenn Sie einen Snapshot eines Geräts erstellen, muss das Cuttlefish-Gerät angehalten werden, damit es sich in einem stabilen Zustand befindet. Wenn das Gerät angehalten wird, werden alle vCPUs und Geräte beendet und alle Puffer übertragen ihren Status an die VM. Der Snapshot speichert dann den vCPU-Status, den Arbeitsspeicher und den Gerätestatus in einem angegebenen Zielordner auf der Festplatte.
VirtioFS wird nicht unterstützt und muss beim Erstellen eines Snapshots deaktiviert werden. Übergeben Sie das Argument --enable_virtiofs=false, wenn Sie cvd create oder cvd start ausführen, um VirtioFS zu deaktivieren.
Für Snapshots wird nur der SwiftShader-GPU-Modus (guest_swiftshader) unterstützt. Andere beschleunigte Grafikmodi
werden nicht unterstützt.
In den folgenden Schritten wird beschrieben, wie Sie ein Cuttlefish-Gerät starten und einen Snapshot erstellen.
Starten Sie ein Gerät und deaktivieren Sie dabei VirtioFS. Anschließend können Sie das Gerät verwenden.
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshaderErstellen Sie einen Snapshot, indem Sie
cvd snapshot_takemit den folgenden Flags ausführen:--force: Wenn im angegebenen Snapshot-Pfad ein Ordner vorhanden ist, wird dieser Ordner mit diesem Flag gelöscht und ein neuer Ordner mit dem Snapshot im Snapshot-Pfad erstellt.--auto_suspend: Hält das Gerät an, bevor der Snapshot erstellt wird, und setzt das Gerät fort, nachdem der Snapshot erstellt wurde.--snapshot_path: Der angegebene Pfad, in dem ein neuer Ordner mit dem Snapshot erstellt wird.
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
Cuttlefish-Gerät wiederherstellen
Wenn Sie einen Snapshot eines Cuttlefish-Geräts wiederherstellen, muss die Cuttlefish-Instanz, für die der Snapshot erstellt wurde, beendet werden. Wenn die Instanz bereits beendet wurde, sind keine weiteren Maßnahmen erforderlich und der Snapshot kann wiederhergestellt werden.
Wenn Sie einen Snapshot eines Cuttlefish-Geräts wiederherstellen möchten, starten Sie ein Gerät mit cvd create und geben Sie den Snapshot-Pfad an. Wenn sich die Basisinstanznummer des Cuttlefish-Geräts, auf dem der Snapshot erstellt wurde, von der Basisinstanznummer der aktuellen Cuttlefish-Instanz unterscheidet, übergeben Sie diese Basisinstanznummer mit dem Flag --base_instance_num.
cvd create --snapshot_path=PATH \
--base_instance_num=IDCuttlefish-Gerät anhalten
Sie können ein Cuttlefish-Gerät anhalten, ohne einen Snapshot zu erstellen. Es wird kein Speicherplatz zum Speichern des Status verwendet. Führen Sie Folgendes aus, um ein Cuttlefish-Gerät anzuhalten:
cvd suspendCuttlefish-Gerät fortsetzen
Führen Sie Folgendes aus, um ein angehaltenes Cuttlefish-Gerät fortzusetzen:
cvd resumeFunktion „Snapshot/Wiederherstellung“ validieren
Die Funktion „Snapshot/Wiederherstellung“ kann mit dem folgenden Test validiert werden:
atest SnapshotTest