web-dev-qa-db-fra.com

comment enregistrez-vous l'instantané de l'émulateur Android?

Une mise à jour des outils de développement Android vient de paraître, vous permettant d'enregistrer et de restaurer des instantanés d'émulateur. Est-ce que quelqu'un sait comment utiliser cette fonctionnalité? Cela réduirait considérablement le temps de chargement de l'émulateur! Mais je ne peux pas trouver un moyen de dire à l'émulateur de le faire. Merci.

34
Gaurav

Honeycomb a introduit cette fonctionnalité et elle est plutôt cool! C'est comme la fonctionnalité d'hibernation sur un ordinateur portable. Vous enregistrez l'état de l'émulateur dans un fichier volumineux et le restaurez ultérieurement à partir du fichier.

Il y a deux façons de l'obtenir. La première consiste à définir les options souhaitées dans la boîte de dialogue Options de lancement lors du démarrage de l'émulateur à partir du SDK Android et du gestionnaire AVD (voir image ci-dessous). L'option Effacer les données utilisateur existe toujours auparavant, ce qui créera un nouveau système à partir de zéro. Les nouvelles options d'instantané sont Lancer depuis l'instantané (s'il en existe déjà un) ou Enregistrer dans un instantané lorsque l'émulateur est arrêté. Évidemment, vous devez enregistrer un instantané avant de pouvoir en lancer un. Le fichier de capture instantanée peut devenir assez volumineux, ce qui ajoute au temps nécessaire pour que l'émulateur se ferme lorsque vous le fermez. Mais ça vaut le coup. Lancer un instantané est très rapide, comparé à toute la séquence de démarrage d’Android. Une des astuces que vous pouvez faire est d’enregistrer une fois dans l’instantané, puis de démarrer à partir d’instantané mais ne pas enregistrer dans un instantané après cette première fois. Vos startups seront rapides et vos sorties rapides. Cependant, vous commencerez toujours avec le même état d'instantané, peu importe ce que vous ferez dans chaque session d'émulateur.

enter image description here

L'autre façon d'utiliser les instantanés consiste à utiliser la ligne de commande de l'émulateur. La documentation ne mentionne actuellement pas ces options, mais en appelant l'option d'aide sur l'émulateur, nous trouvons:

-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

Je n'ai pas essayé les instantanés à partir de la ligne de commande, car la boîte de dialogue Options de lancement est plus simple. EDIT: Une dernière chose, le fichier de capture instantanée est stocké au même endroit que vos fichiers AVD.

29
Dave MacLean

Apparemment, vous pouvez aussi le faire via l'interface de la console:

$ 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
21
Jan Berkel

Droite. En supposant que vous ayez coché "Activer l'instantané" lors de la création de l'avd, il suffit de fermer l'émulateur pour enregistrer son état et le restaurer à la prochaine exécution, que ce soit du gestionnaire ou d'Eclipse.

3
Gaurav

Je ne sais pas s'il existe une option disponible pour restaurer. 

Mais vous pouvez enregistrer l'instantané actuel de votre émulateur

Changez votre perspective de vue de Java à DDMS ..____. En cliquant sur le bouton entouré en rouge, vous pouvez enregistrer une copie de l'instantané actuel de votre émulateur.

enter image description here

2
Tanmay Mandal

Pour les utilisateurs de Shell, si vous exécutez un émulateur --no-window: Il semble que l'utilisation de kill -2 pour signaler que le processus d'émulateur enregistre l'instantané de démarrage par défaut, en supposant que vous ayez créé l'émulateur avec l'option --snapshot.

Faire ceci:

killall -2 emulator64-x86

La prochaine fois que vous démarrerez cet émulateur, le lancement avec autre chose que l'option -no-snapshot-load restaurera à partir de cet instantané.

1
Yoni Samlan

Sur la base de l'une des principales réponses, j'ai trouvé cette solution de travail:

adb emu avd snapshot save foo

Et surtout c'est très utile avec celui-ci:

adb emu avd snapshot load bar
0
Roman Syrchin