Android 15 introduce la forma de tomar y restablecer una instantánea de un dispositivo virtual Cuttlefish. Tomar una instantánea de un dispositivo Cuttlefish te permite guardar el estado del dispositivo en una imagen en el disco. Luego, puedes restablecer la instantánea para iniciar un dispositivo Cuttlefish en el estado guardado anteriormente.
Puedes usar instantáneas en varios flujos de trabajo automatizados o manuales. Cuando realices un procedimiento que modifique el dispositivo, puedes tomar una instantánea del dispositivo para asegurarte de que puedes restablecerlo a un estado específico. Por ejemplo, cuando ejecutas conjuntos de pruebas que modifican el estado del dispositivo y pueden causar problemas o inestabilidades en las pruebas posteriores, puedes tomar una instantánea para restablecer el dispositivo a un estado guardado después de una prueba, lo que garantiza que las pruebas posteriores se ejecuten sin problemas.
Otro ejemplo de flujo de trabajo en el que las instantáneas son útiles es cuando se prueba el comportamiento de una app. Cuando se prueba el comportamiento de una app en función de un conjunto de acciones, se puede tomar una instantánea entre las acciones mientras se ejecuta la app para permitir que se restablezca esa instantánea sin tener que reiniciar desde el principio. Por ejemplo, si el inicio de un juego tiene un tiempo de preparación prolongado, puedes tomar una instantánea después de llegar al menú principal para restablecer el dispositivo a ese estado y omitir el tiempo de preparación.
Toma una instantánea de un dispositivo Cuttlefish
Cuando se toma una instantánea de un dispositivo, este debe estar suspendido para garantizar que se encuentre en un estado estable. Cuando se suspende el dispositivo, se detienen todas las CPU virtuales y los dispositivos, y todos los búferes envían su estado a la VM. Luego, la instantánea guarda el estado de la CPU virtual, la memoria y el dispositivo en el disco en una carpeta de destino especificada.
VirtiosFS no es compatible y debe inhabilitarse cuando se toma una instantánea. Para inhabilitar VirtioFS, pasa el argumento --enable_virtiofs=false
cuando ejecutes cvd create
o cvd start
.
Solo se admite el modo de GPU SwiftShader (guest_swiftshader
) para las instantáneas. No se admiten otros modos de gráficos acelerados.
En los siguientes pasos, se describe el proceso para iniciar un dispositivo Cuttlefish y tomar una instantánea.
Inicia un dispositivo y, al mismo tiempo, inhabilita VirtioFS. (Luego, puedes usar el dispositivo).
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
Ejecuta
cvd snapshot_take
con los siguientes parámetros para tomar una instantánea:--force
: Si existe una carpeta en la ruta de acceso de la instantánea especificada, esta marca garantiza que se borre la carpeta existente y se cree una nueva en la ruta de acceso de la instantánea que contiene la instantánea.--auto_suspend
: Suspende el dispositivo antes de que se tome la instantánea y lo reanuda después.--snapshot_path
: Es la ruta de acceso especificada en la que se crea una carpeta nueva con la instantánea.
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
Cómo restablecer un dispositivo Cuttlefish
Cuando se restablece una instantánea del dispositivo Cuttlefish, se debe detener la instancia de Cuttlefish para la que se tomó la instantánea. Si la instancia ya está detenida, no se requiere ninguna acción adicional y se puede restablecer la instantánea.
Para restablecer una instantánea de un dispositivo Cuttlefish, ejecuta un dispositivo con cvd create
y, luego, incluye la ruta de acceso a la instantánea. Si el número de instancia base del dispositivo Cuttlefish en el que se tomó la instantánea es diferente del número de instancia base de la instancia de Cuttlefish actual, pasa ese número de instancia base con la marca --base_instance_num
.
cvd create --snapshot_path=PATH \
--base_instance_num=ID
Cómo suspender un dispositivo Cuttlefish
Puedes suspender un dispositivo Cuttlefish sin tomar una instantánea (no se usa espacio en disco para guardar el estado). Para suspender un dispositivo Cuttlefish, ejecuta lo siguiente:
cvd suspend
Cómo reanudar un dispositivo Cuttlefish
Para reanudar un dispositivo Cuttlefish suspendido, ejecuta lo siguiente:
cvd resume
Valida la función de instantáneas y restablecimiento
Para validar la función de instantáneas y restablecimiento, ejecuta la siguiente prueba:
atest SnapshotTest