Monday, April 16, 2012

how do you save android emulator snapshot?


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 would greatly reduce the emulator's load time! But I can't find a way to tell the emulator to do so. Thanks.



Source: Tips4all

4 comments:

  1. 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.

    ReplyDelete
  2. 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

    ReplyDelete
  3. I dony know is there any option availabe there to restore-from.

    But you can save your emulator's current snapshot

    Change your view perspective from Java to DDMS .
    By clicking the highlighted botton you can save,copy your emulator's current snapshot

    ReplyDelete
  4. Aight. Assuming you checked "Eable Snapshot" while creating the avd, simply closing the emulator saves its state, and is restored on the next run! Be it from the manager of from eclipse.

    ReplyDelete