Android 15 introduce la procedura per acquisire e ripristinare uno snapshot di un dispositivo virtuale Cuttlefish. L'acquisizione di un'istantanea di un dispositivo Cuttlefish consente di salvare lo stato del dispositivo in un'immagine sul disco. Puoi quindi ripristinare lo snapshot per visualizzare un dispositivo Cuttlefish nello stato salvato in precedenza.
Puoi utilizzare gli snapshot in vari flussi di lavoro automatici o manuali. Quando esegui una procedura che modifica il dispositivo, puoi scattare uno snapshot del dispositivo per assicurarti di poterlo ripristinare a uno stato specifico. Ad esempio, quando esegui suite di test che modificano lo stato del dispositivo e possono potenzialmente causare problemi o instabilità nei test successivi, puoi scattare uno snapshot per ripristinare il dispositivo a uno stato salvato dopo un test, assicurandoti che i test successivi vengano eseguiti correttamente.
Un altro flusso di lavoro di esempio in cui gli snapshot sono utili è il test del comportamento di un'app. Quando testi il comportamento di un'app in base a una serie di azioni, puoi scattare uno snapshot tra un'azione e l'altra mentre l'app è in esecuzione per ripristinare lo snapshot senza dover ricominciare da capo. Ad esempio, se l'avvio di un gioco richiede molto tempo, puoi scattare un'istantanea dopo aver raggiunto il menu principale per ripristinare il dispositivo in quello stato, saltando il tempo di avvio.
Acquisire uno snapshot di un dispositivo Cuttlefish
Quando acquisisci uno snapshot di un dispositivo, il dispositivo Cuttlefish deve essere sospeso per assicurarti che sia in uno stato stabile. Quando il dispositivo è sospeso, tutte le vCPU e i dispositivi vengono arrestati e tutti i buffer trasferiscono il loro stato alla VM. Lo snapshot salva quindi lo stato della vCPU, la memoria e lo stato del dispositivo sul disco in una cartella di destinazione specificata.
VirtiosFS non è supportato e deve essere disattivato quando viene creato uno snapshot. Per
disattivare VirtioFS, passa l'argomento
--enable_virtiofs=false
quando esegui cvd create
o cvd start
.
Per gli snapshot è supportata solo la modalità GPU SwiftShader (guest_swiftshader
). Altre modalità grafiche accelerate
non sono supportate.
I seguenti passaggi descrivono la procedura di avvio di un dispositivo Cuttlefish e di acquisizione di uno snapshot.
Avvia un dispositivo disattivando VirtioFS. A questo punto puoi utilizzare il dispositivo.
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
Acquisisci uno snapshot eseguendo
cvd snapshot_take
con i seguenti flag:--force
: se esiste una cartella nel percorso dello snapshot specificato, questo flag garantisce che la cartella esistente venga eliminata e che ne venga creata una nuova nel percorso dello snapshot contenente lo snapshot.--auto_suspend
: sospende il dispositivo prima dell'acquisizione dello snapshot e lo riattiva dopo l'acquisizione dello snapshot.--snapshot_path
: il percorso specificato in cui viene creata una nuova cartella con lo snapshot.
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
Ripristinare un dispositivo Cuttlefish
Quando ripristini uno snapshot del dispositivo Cuttlefish, l'istanza Cuttlefish per cui è stato acquisito lo snapshot deve essere arrestata. Se l'istanza è già arrestata, non sono necessarie ulteriori azioni e lo snapshot può essere ripristinato.
Per ripristinare uno snapshot di un dispositivo Cuttlefish, avvia un dispositivo con cvd create
e includi il percorso dello snapshot. Se il numero di istanza di base del dispositivo Cuttlefish
su cui è stata acquisita l'istantanea è diverso dal numero di istanza
di base dell'istanza Cuttlefish corrente, passa il numero di istanza
di base utilizzando il flag --base_instance_num
.
cvd create --snapshot_path=PATH \
--base_instance_num=ID
Sospendere un dispositivo Cuttlefish
Puoi sospendere un dispositivo Cuttlefish senza acquisire uno snapshot (non viene utilizzato spazio su disco per salvare lo stato). Per sospendere un dispositivo Cuttlefish, esegui:
cvd suspend
Riprendere un dispositivo Cuttlefish
Per riprendere un dispositivo Cuttlefish sospeso, esegui:
cvd resume
Convalidare la funzionalità Snapshot/Ripristino
La funzionalità Snapshot/Restore può essere convalidata eseguendo il seguente test:
atest SnapshotTest