Tips : Android エミュレータの高速化① ― Intel HAXM

Androidアプリ開発では、どうしても画面サイズを変更したり、デバイスの種類などによる断片化を考慮する必要があります。 仮想マシンによるテスト環境があると便利なのですが、Androidエミュレータは非常に重いことで有名です。

そんなエミュレータを高速化して使いやすくする方法を2つほど試してみたので、メモしておきます。

Intel HAXM

HAXMはIntel Hardware Accelerated Execution Managerの略で、仮想マシンをCPUの仮想化支援機構などを利用することで高速化する仕組みです。 Intelx86 Imageでないと使えないので、実質Android 4.0.3以降の仮想マシンで有効です。

HAXMインストーラIntel x86 Atom System Image

Android SDK Managerから、Intel x86 Emulator Accelerator とIntel x86 Atom System Imageをインストールします。

Extras以下のIntel x86 Emulator Acceleratorをチェック。

f:id:tomoyukim:20140706194404p:plain

利用したいVersionのAndroid SDK以下のIntel x86 Atom System Imageをチェック

f:id:tomoyukim:20140706194544p:plain

インストールが完了すると、<Android SDK Root>/extras/intel/Hardware_Accelerated_Execution_Manager以下にインストーラがDLされているので、それを実行します。

もし、問題なければそのままWizardに従って完了するだけですが、エラーをする場合はBIOSの設定を変更する必要があります。 VT-xを有効にする、またはIntel Execute Disable Bit (XD)を有効にする必要があるようです。 (自分は前者はひっかかりませんでしたが、後者が引っかかりました。利用しているシステムによっては別のエラーの可能性もあるかも。。。)

システムによって名前が微妙に違ったりするようなので、まずはBIOSに入ってVTとかXDとか書いてある設定項目や説明を探して、Enabledにしてみるといいと思います。

AVDの実行

インストールが完了したあとは、仮想マシンを実行するだけです。

先ほどSDK ManagerでインストールしたVersionのTargetを選択し、CPU/ABIをIntel Atom (x86)にします。

f:id:tomoyukim:20140706195523p:plain

そして、実行するだけです。

まとめ

起動時間はそんなに体感変わらないですが、起動後の動作は確かに速くなっています。 AVDを利用する場合はMustで利用するべきかと思います。

個人的には、実機MAXの法則は変わらないと思っていますが、冒頭で触れたように利用したほうが便利なケースも確かに存在しますので、 そういう時は仮想マシンの利用を検討しても良いと思います。

ただ、自分はAVD+HAXMではなくGenymotionを利用しています。それは圧倒的に速いからです。 次回はGenymotionについてメモしておきたいと思います。