web-dev-qa-db-ja.com

Androidエミュレータのスナップショットをどのように保存しますか?

Android開発ツールのアップデートがリリースされたばかりで、エミュレータのスナップショットに保存したり、そこから復元したりできます。この機能の使い方を知っている人はいますか?これにより、エミュレータのロード時間が大幅に短縮されます。 !しかし、エミュレータにそうするように指示する方法が見つかりません。

34
Gaurav

Honeycombがこの機能を導入しました。ラップトップの休止機能のようなものです。エミュレータの状態を大きなファイルに保存し、後でその状態をファイルから復元します。

それを取得する方法はいくつかあります。最初の方法は、Android SDKおよびAVD Managerからエミュレーターを起動するときに、[Launch Options]ダイアログで目的のオプションを設定することです(下の画像を参照)。ユーザーデータのワイプオプションは以前からあります。 、それにより、新しいシステムが最初から作成されます。新しいスナップショットのオプションは、スナップショットから起動する(以前に保存されている場合)、またはエミュレーターのシャットダウン時にスナップショットに保存することです。明らかに、スナップショットを保存する必要があります。スナップショットファイルはかなり大きくなる可能性があり、エミュレータを閉じるときにエミュレータが終了するまでの時間が長くなります。しかし、それだけの価値はあります。スナップショットからの起動は、ブート全体を実行する場合に比べて非常に高速ですAndroidの起動シーケンス。実行できるトリックの1つは、一度スナップショットに保存してからスナップショットから起動することですが、その後はスナップショットに保存しないでください。スタートアップは速くなり、終了は速くなります。ただし、何をしても、毎回同じスナップショットの状態から開始する各エミュレータセッションで行います。

enter image description here

スナップショットを使用するもう1つの方法は、エミュレータのコマンドラインからです。現在、ドキュメントではこれらのオプションについて言及していませんが、エミュレータでヘルプオプションを呼び出すと、次のことがわかります。

-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

[起動オプション]ダイアログの方が簡単なので、コマンドラインからスナップショットを試していません。編集:もう1つ、スナップショットファイルはAVDファイルと同じ場所に保存されます。

29
Dave MacLean

どうやら、コンソールインターフェイスからも実行できます。

$ 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

私がこの実用的な解決策を見つけたトップ回答の1つに基づいて:

adb emu avd snapshot save foo

そして特にこれはこれと一緒に非常に便利です:

adb emu avd snapshot load bar
4
Roman Syrchin

正しい。 avdの作成中に「スナップショットを有効にする」をオンにしたと仮定すると、エミュレーターを閉じるだけでその状態が保存され、マネージャーまたはEclipseからの次の実行時に復元されます。

3
Gaurav

復元できるオプションがあるかどうかはわかりません。

ただし、エミュレータの現在のスナップショットを保存できます

ビューの視点をJavaからDDMSに変更します。赤で囲まれたボタンをクリックすると、エミュレータの現在のスナップショットのコピーを保存できます

enter image description here

2
Tanmay Mandal

Shellユーザーの場合、--no-windowエミュレーターを実行している場合:kill -2を使用してエミュレータープロセスがデフォルトのブートスナップショットを保存することを通知するために--snapshotを使用するように見えます。オプション。

これを行う:

killall -2 emulator64-x86

次回そのエミュレーターを起動するときに、-no-snapshot-loadオプション以外で起動すると、そのスナップショットから復元されます。

1
Yoni Samlan