O Android 15 apresenta como fazer e restaurar um snapshot de um dispositivo virtual Cuttlefish. Ao fazer um snapshot de um dispositivo Cuttlefish, você salva o estado dele em uma imagem no disco. Em seguida, é possível restaurar o snapshot para ativar um dispositivo Cuttlefish no estado salvo anteriormente.
Você pode usar snapshots em vários fluxos de trabalho automatizados ou manuais. Ao realizar um procedimento que modifica o dispositivo, faça um snapshot dele para garantir que você possa restaurá-lo 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, faça um snapshot para restaurar o dispositivo a um estado salvo após um teste, garantindo que os testes subsequentes sejam executados sem problemas.
Outro fluxo de trabalho de exemplo em que os snapshots são úteis é ao testar o comportamento de um app. 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 está em execução para restaurar esse snapshot sem precisar reiniciar do início. Por exemplo, se o lançamento de um jogo tiver um tempo de ativação longo, faça um snapshot depois de acessar o menu principal para restaurar o dispositivo a esse estado, ignorando o tempo de ativação.
Fazer um snapshot de um dispositivo Cuttlefish
Ao fazer um snapshot de um dispositivo, o dispositivo Cuttlefish precisa ser suspenso para garantir que ele esteja em um estado estável. Quando o dispositivo é suspenso, todas as vCPUs e dispositivos são interrompidos, e todos os buffers enviam o estado 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 ao fazer um snapshot. Para desativar o VirtioFS, transmita o argumento --enable_virtiofs=false ao executar cvd create ou cvd start.
Somente o modo de GPU SwiftShader (guest_swiftshader) é compatível com snapshots. Outros modos gráficos acelerados
não são compatíveis.
As etapas a seguir descrevem o processo de inicialização de um dispositivo Cuttlefish e de fazer um snapshot.
Inicie um dispositivo, desativando o VirtioFS. Em seguida, você pode usar o dispositivo.
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshaderFaça um snapshot executando
cvd snapshot_takecom as seguintes flags:--force: se uma pasta existir no caminho do snapshot especificado, essa flag garante que a pasta atual seja excluída e uma nova pasta seja criada no caminho do snapshot contendo o snapshot.--auto_suspend: suspende o dispositivo antes de o snapshot ser feito e o retoma depois.--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 a qual o snapshot foi feito precisa ser interrompida. Se a instância já estiver interrompida, nenhuma outra ação será necessária e o snapshot poderá ser restaurado.
Para restaurar um snapshot de um dispositivo Cuttlefish, inicie um dispositivo com cvd create e inclua o caminho do snapshot. Se o número da instância base do dispositivo Cuttlefish em que o snapshot foi feito for diferente do número da instância base da instância atual do Cuttlefish, transmita esse número da instância base usando a flag --base_instance_num.
cvd create --snapshot_path=PATH \
--base_instance_num=IDSuspender um dispositivo Cuttlefish
É possível suspender um dispositivo Cuttlefish sem fazer um snapshot (nenhum espaço em disco é usado para salvar o estado). Para suspender um dispositivo Cuttlefish, execute:
cvd suspendRetomar um dispositivo Cuttlefish
Para retomar um dispositivo Cuttlefish suspenso, execute:
cvd resumeValidar o recurso de snapshot/restauração
O recurso de snapshot/restauração pode ser validado executando o seguinte teste:
atest SnapshotTest