2011-01-30 22 views
34

Acaba de lanzarse una actualización de las herramientas de desarrollo de Android que le permite guardar en y restaurar desde una instantánea de emulador. ¿Alguien sabe cómo usar esta característica? ¡Esto reduciría en gran medida el tiempo de carga del emulador! Pero no puedo encontrar una manera de decirle al emulador que lo haga. Gracias.¿cómo se guarda la instantánea del emulador de Android?

Respuesta

2

No sé si hay alguna opción disponible para restaurar.

Pero puede guardar la instantánea actual de su emulador

cambio su vista en perspectiva Java-DDMS. Al hacer clic en el botón rodeado en rojo puede guardar una copia instantánea actual de su emulador

enter image description here

+0

Gracias por la información adicional Tanmay. El botón que rodeaste ayuda a tomar una captura de pantalla :) y eso también es útil. Lo que quise decir es "guardar/restaurar" el "estado" del emulador. Una función lanzada ayer. ¡Pruébalo! – Gaurav

+0

No tenía conocimiento de la actualización. Gracias por eso. –

+0

¿Funciona esto con el android 8 SDK? – hoffmanc

3

derecho. Suponiendo que haya marcado "Habilitar instantánea" al crear el avd, simplemente cerrar el emulador guarda su estado y se restaura en la siguiente ejecución, ya sea desde el administrador o desde eclipse.

29

Honeycomb introdujo esta característica, ¡y es genial! Es como la función de hibernación en una computadora portátil. Está guardando el estado del emulador en un archivo grande y restaurando su estado desde el archivo más adelante.

Hay un par de formas de obtenerlo. La primera forma es establecer las opciones deseadas en el cuadro de diálogo Opciones de inicio al iniciar el emulador desde el SDK de Android y el Administrador de AVD (consulte la imagen a continuación). La opción Eliminar datos de usuario todavía está allí desde antes, y eso creará un nuevo sistema desde cero. Las nuevas opciones de instantáneas son Iniciar desde instantánea (si se ha guardado previamente) o Guardar en instantánea cuando el emulador se apaga. Obviamente, debe guardar una instantánea antes de poder iniciar desde una. El archivo de instantánea puede ser bastante grande, y esto se suma al tiempo que tarda el emulador en salir cuando lo cierra. Pero vale la pena. Lanzar desde una instantánea es muy rápido, en comparación con pasar por toda la secuencia de inicio de Android. Uno de los trucos que puede hacer es Guardar en instantánea una vez, luego Lanzar desde instantánea pero no Guardar en instantánea después de esa primera vez. Tus startups serán rápidas y tus salidas serán rápidas. Sin embargo, siempre comenzará desde el mismo estado de instantánea, sin importar lo que haga en cada sesión de emulador.

enter image description here

La otra manera de usar instantáneas es desde la línea de comandos del emulador. La documentación actualmente no menciona estas opciones, pero invocando la opción de ayuda en el emulador, nos encontramos con los siguientes: instantáneas

-snapstorage <file>   file that contains all state snapshots (default <datadir>/snapshots.img) 
-no-snapstorage    do not mount a snapshot storage file (this disables all snapshot functionality) 
-snapshot <name>    name of snapshot within storage file for auto-start and auto-save (default 'default-boot') 
-no-snapshot     perform a full boot and do not do not auto-save, but qemu vmload and vmsave operate on snapstorage 
-no-snapshot-save    do not auto-save to snapshot on exit: abandon changed state 
-no-snapshot-load    do not auto-start from snapshot: perform a full boot 
-snapshot-list     show a list of available snapshots 
-no-snapshot-update-time  do not do try to correct snapshot time on restore 

no he probado desde la línea de comandos desde el cuadro de diálogo Opciones de lanzamiento es más fácil. EDITAR: Una cosa más, el archivo de instantánea se almacena en el mismo lugar que sus archivos AVD.

+4

una pequeña adición: las opciones de instantáneas aparecerán atenuadas, a menos que al crear el AVD elija "Activar instantáneas". –

+3

Eso es verdad. Pero puede Editar un AVD existente para habilitar instantáneas. Así que no hay necesidad de volver atrás y recrear todos los existentes. –

+2

+1 para incluir la * línea de comando * versión y la ruta de almacenamiento – n611x007

21

Al parecer, también puede hacerlo a través de la interfaz de consola:

$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
avd snapshot save foo 
+0

'emulador: escuchar las conexiones de la consola en el puerto: 5554' pero obtuvo' Conectando a localhost ... No se pudo abrir la conexión al host, en el puerto 5554: Connect failed' –

+1

Para las personas que como yo lo encuentran en 2017, esta característica parece estar ausente en las herramientas v25. Para usarlo uno necesita degradar a v24. – Ishamael

+0

Según lo que puedo ver (abril de 2017), esto parece estar ausente en Herramientas v25 (el error dice que la opción no es compatible), sin embargo, en Herramientas v26 la captura de imágenes podría estar de regreso (no estoy seguro). No recibo ningún error/comentario, por lo que no estoy seguro de si está allí o no. Podría alguien que lo haya hecho funcionar antes con cualquier otra versión, por favor verifique en Tools v26. Gracias. –

1

Para el usuario de consola, si se está ejecutando un emulador --no-window: Parece que el uso de kill -2 para señalar el proceso emulador salvará el arranque por defecto instantánea, suponiendo que haya creado el emulador con la opción --snapshot.

hacer esto:

killall -2 emulator64-x86 

La próxima vez que arranque que emulador, lanzando con cualquier cosa, pero la opción -no-snapshot-load va a restaurar a partir de esa instantánea.

+0

'killall' puede ser un enfoque de escopeta, pero esto funciona para los emuladores x86_64. – Corin

+0

[Wikipedia] (http://en.wikipedia.org/wiki/Unix_signal) dice que la señal 2 es SIGINT. También puede enviar SIGINT ingresando 'fg' y luego presionando Ctrl + C. – unforgettableid

Cuestiones relacionadas