Android 15 presenta cómo tomar una instantánea 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 que un dispositivo Cuttlefish vuelva al 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 poder restablecerlo a un estado específico. Por ejemplo, cuando ejecutas paquetes de pruebas que modifican el estado del dispositivo y pueden causar problemas o inestabilidades en las siguientes pruebas, 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 de forma correcta.
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, puedes tomar una instantánea entre acciones mientras la app se ejecuta para que puedas restablecerla sin tener que reiniciar desde el principio. Por ejemplo, si el inicio de un juego tiene un tiempo de activación largo, puedes tomar una instantánea después de llegar al menú principal para restablecer el dispositivo en ese estado y omitir el tiempo de activación.
Cómo tomar una instantánea de un dispositivo Cuttlefish
Cuando se toma una instantánea de un dispositivo, el dispositivo Cuttlefish debe estar suspendido para asegurarse de que esté en un estado estable. Cuando se suspende el dispositivo, se detienen todas las vCPU 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 estado del dispositivo en el disco en una carpeta de destino especificada.
VirtiosFS no es compatible y se debe inhabilitar 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 de iniciar un dispositivo Cuttlefish y tomar una instantánea.
Inicia un dispositivo y, luego, inhabilita VirtioFS. (Luego, puedes usar el dispositivo).
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
Para tomar una instantánea, ejecuta
cvd snapshot_take
con las siguientes marcas:--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 la contiene.--auto_suspend
: Suspende el dispositivo antes de que se tome la instantánea y lo reanuda después de que se toma.--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 de un 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, inicia un dispositivo con cvd create
y, luego, incluye la ruta de acceso de la instantánea. Si el número de instancia base del dispositivo de Cuttlefish en el que se tomó la instantánea es diferente del número de instancia base de la instancia actual de Cuttlefish, 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 de Cuttlefish
Puedes suspender un dispositivo Cuttlefish sin tomar una instantánea (no se usa espacio en el 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 Snapshot/Restore
Para validar la función de instantáneas o restablecimiento, ejecuta la siguiente prueba:
atest SnapshotTest