An update to the Android development tools was just released enabling you to save-to and restore-from an emulator snapshot. Does anyone know how to use this feature? This wo
Honeycomb introduced this feature, and it's pretty cool! It's like the hibernate feature on a laptop. You're saving the state of the emulator into a big file, and restoring its state from the file later.
There are a couple of ways to get it. The first way is to set your desired options in the Launch Options dialog when Starting the emulator from the Android SDK and AVD Manager (see image below). The Wipe user data option is still there from before, and that will create a new system from scratch. The new snapshot options are to Launch from snapshot (if one has been saved previously), or to Save to snapshot when the emulator shuts down. Obviously you have to save a snapshot before you can launch from one. The snapshot file can get rather large, and this adds to how long it takes for the emulator to exit when you close it. But it's worth it. Launching from a snapshot is very quick, compared to going through the entire boot-up sequence of Android. One of the tricks you could do is Save to snapshot once, then Launch from snapshot but don't Save to snapshot after that first time. Your startups will be fast and your exits will be fast. You'll be starting from the same snapshot state every time though, no matter what you do in each emulator session.
The other way to use snapshots is from the command line of emulator. The documentation currently doesn't mention these options, but by invoking the help option on emulator, we find these:
-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
I haven't tried snapshots from the command line since the Launch Options dialog is easier. EDIT: One more thing, the snapshot file gets stored in the same place as your AVD files.
I don't know is there any option available to restore from.
But you can save your emulator's current snapshot
Change your view perspective from Java
to DDMS
.
By clicking the button encircled in red you can save a copy your emulator's current snapshot
Apparently you can also do it via the console interface:
$ 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
For shell users, if you're running a --no-window
emulator: It looks like using kill -2
to signal the emulator process will save the default boot snapshot, assuming you created the emulator with the --snapshot
option.
Do this:
killall -2 emulator64-x86
The next time you boot that emulator, launching with anything but the -no-snapshot-load
option will restore from that snapshot.
Based on one of the top answers I've found this working solution:
adb emu avd snapshot save foo
And especially it is very useful together with this one:
adb emu avd snapshot load bar
Right. Assuming you checked "Enable Snapshot" while creating the avd, simply closing the emulator saves its state and is restored on the next run, be it from the manager or from eclipse.