O Android 15 apresenta como tirar um snapshot e restaurar um snapshot de um dispositivo virtual Cuttlefish. Capturar um instantâneo de um O dispositivo Cuttlefish permite salvar o estado do dispositivo em uma imagem no disco. É possível restaurar o snapshot para abrir um dispositivo Cuttlefish na do estado salvo anteriormente.
É possível usar snapshots em vários fluxos de trabalho automatizados ou manuais. Quando realizando um procedimento que modifica o dispositivo, você pode tirar uma captura de tela o dispositivo para garantir que ele possa ser restaurado a um estado especificado. Por exemplo, ao executar conjuntos de testes que modificam o estado do dispositivo e podem causar problemas ou instabilidades nos testes a seguir. você pode tirar um snapshot para restaurar o dispositivo para um estado salvo depois de um teste, garantindo que os testes subsequentes sejam executados sem erros.
Outro exemplo de fluxo de trabalho em que os snapshots são úteis é ao testar de um aplicativo. Ao testar o comportamento de um app com base em um conjunto de ações, faça um snapshot entre as ações enquanto o app é executado para restaurar o snapshot sem precisar reiniciar do desde o início. Por exemplo, se o lançamento de um jogo tem um longo tempo de inicialização, você pode tirar um instantâneo depois de chegar ao menu principal para que você possa restaurar para esse estado, ignorando o tempo de recuperação.
Capturar snapshot de um dispositivo Cuttlefish
Ao capturar um snapshot de um dispositivo, o Cuttlefish precisa estar suspenso. para garantir que o dispositivo Cuttlefish esteja estável. Quando o dispositivo é suspenso, todas as vCPUs e todos os dispositivos são interrompidos, e todos os buffers são enviados o estado deles para a VM. Em seguida, o snapshot salva o estado da vCPU, a memória e o estado do dispositivo no disco em uma pasta de destino especificada.
O VirtiosFS não é compatível e precisa ser desativado durante a captura de um snapshot. Para
desativar o VirtioFS, passar o argumento
--enable_virtiofs=false
ao executar cvd start
.
Somente o modo GPU SwiftShader (guest_swiftshader
) é compatível com
snapshots. Outros modos gráficos acelerados
não têm suporte.
As etapas a seguir descrevem o processo de inicialização de um dispositivo Cuttlefish e capturar um snapshot.
Iniciar um dispositivo enquanto desativa o VirtioFS. Depois disso, você poderá usar o dispositivo.
cvd start --enable_virtiofs=false --gpu_mode=guest_swiftshader
Capture um snapshot executando
cvd snapshot_take
com as seguintes flags:--force
: se uma pasta existir no caminho do snapshot especificado, esse a flag garante que a pasta atual seja excluída, e uma nova pasta é criada no caminho que contém o snapshot--auto_suspend
: suspende o dispositivo antes que o snapshot seja capturado e retoma o dispositivo depois que o snapshot é capturado.--snapshot_path
: o caminho especificado em que uma nova pasta é criada com o snapshot.
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
Restaurar um dispositivo Cuttlefish
Ao restaurar um snapshot de dispositivo Cuttlefish, a instância do Cuttlefish para em que o snapshot foi capturado precisam ser interrompidos. Se a instância já estiver parou, nenhuma outra ação é necessária e o snapshot pode ser restaurado.
Para restaurar um snapshot de um dispositivo Cuttlefish, inicie um dispositivo com cvd start
.
e incluir o caminho do snapshot. Se o número da instância base do bloco
o dispositivo em que o snapshot foi capturado é diferente da instância de base
da instância do Cuttlefish atual, transmita essa instância base
usando a sinalização --base_instance_num
.
cvd start --snapshot_path=PATH \
--base_instance_num=ID
Suspender um dispositivo Cuttlefish
É possível suspender um dispositivo Cuttlefish sem capturar um snapshot (sem espaço em disco). é usado para salvar o estado). Para suspender um dispositivo Cuttlefish, execute:
cvd suspend
Retomar um dispositivo Cuttlefish
Para retomar um dispositivo Cuttlefish suspenso, execute:
cvd resume
Validar o recurso de snapshot/restauração
Para validar o recurso de snapshot/restauração, execute o seguinte teste:
atest SnapshotTest