Eclipse: Android Virtual Device(AVD) エミュレーターが動かない時
EclipseでAndroidのアプリ開発をしているとき、
Android Virtual Device(AVD)、エミュレーターが上手く動いてくれないことが何度もありました。
色々調べてみて分かったことをここにメモしておきます。
まず、Android Virtual Device(AVD) Managerを立ち上げて、Android Virtual Devices画面でCreateを押して新しいエミュレーター作成画面にいきます。
作成画面には多くの項目があり、最初は何をどうすればいいか訳が分からないと思います。
ここで何を選択して何を入力するかでエミュレーターが上手く動作するかが決まるので、一つ一つの項目にじっくり焦点を当てていきましょう。
◎AVD Name
ここは迷わず、エミュレーターに好きな名前を付けましょう。
◎Devices
作成しているAndroidプロジェクトに合わせて、使用したいAndroidの端末を選びましょう。タブレット等もあり、選べる端末が多いせいでどれを選べばいいのか分からない方もいると思います。とりあえずスマホで動くか試したい、という方はNexus5を選ぶといいです。
◎Target
まず、作成しているAndroidプロジェクトのTargetを確認しましょう。
確認方法は、該当のプロジェクトを右クリックしてプロパティを選択。左側にあるAndroidをクリックすると、右側にProject Build Targetという画面が出てターゲットが分かります。デフォルトだと自分がSDK Managerでインストールした最新のAPIレベルのものが選択されています。
追記(6/5)
AndroidとGoogleを選べますが、特別な理由が無い限りAndroidを選んでください。
先ほどAndroid4.4W、APIレベル20をターゲットにしたらエミュレーターが上手く動かず、Android4.1.2、APIレベル16で試したら上手く動きました。
困ったときはAPIレベルを下げてみるのも効果があるかもしれません。
◎CPU/ABI
ここでは、先ほどのTargetでAPI Level15以下を選択した場合、ARMしか選択肢がありません。API Level16以上を選択した場合はIntel Atom(x86)がありますので選択してください。
Intel Atom(x86)を使うにはSDK Managerの一番下にあるIntel x86 Emulator Accelerator(HAXM installer)をインストールする必要があります。SDKからインストールしたら、コンピューターにsdkが保存されているフォルダからsdk→extras→Hardware_Accelerated_Execution_Managerからintelhaxm-android.exeを実行してインストールを済ませてください。
◎Keyboard
パソコンからのキーボードの入力をエミュレーターで動作させてるアプリで受け付けるかどうかという項目です。得に理由が無ければチェックは外していいです。
◎Skin
エミュレーター画面の右側に電源ボタンやキーボード、ホームボタン等を表示させるかという項目です。得に理由が無ければNo skinを選択でいいです。画面がすっきりします。
◎Front Camera/Back Camera
アプリ内でカメラの機能を使いたい場合を除き、デフォルトのNoneのままでいいです。
◎Memory Options
こいつが曲者です。
Deviceで最近の端末を選択した方はRAMの欄に2048や1907等が自動で入力されてると思います。RAMが768以上だと下に「RAMが768以上だと正常に動作しない~」といった内容の警告が出ます。なのでRAMは768以下に設定しましょう。低すぎても上手くいかないので512くらいを推奨します。
VM Heapには値が低すぎると上手く動作しないことがあるので、デフォルトのままか128を推奨します。
◎Internal Storage
内部ストレージはデフォルトのままでいいです。
◎SD Card
これもアプリ上でSDカードを必要とする、という場面でない限り未入力でいいです。
◎Emulation Options
これが最後の項目ですが、こいつは注意が必要です。
デフォルトでは未選択になっていますが、TargetのAPIが14以上であればUse Host GPU、13以下であればSnapshotを選択したほうがよいようです。
困ったときには、Memory OptionsとEmulation Optionsが悪さをしている可能性が高いです。あとTargetもです。
数値を変えたり色々試してみてください。
あとは実体験なのですが、TargetをAPIレベル15以下にしていて上手く動作しないとき、TargetをAPIレベル16以上にしてCPU/ABIをIntel Atom(x86)にしたら上手くいくことがありました。
この際、APIレベル16以上のSDKをインストールするのと、Intel x86 Emulator Accelerator(HAXM installer)をインストールするのを忘れないでください。
皆さんのエミュレーターが正常に動作しますように。
by 芦野輝明
twitter→https://twitter.com/teriyakiegg