Androidのエミュレーターを高速化するテクニックを紹介します。
HAXM ( Intel Hardware Accelerated Execution Manager )という機能を使います。
この機能自体はSDK17からサポートされており、ご存知の方も多いかと思いますが、劇的にエミュレータが早くなりますのでまだ試しておられない方は是非。
なお、HAXMはVT-xをサポートしているCPUを搭載したPCでないとインストールすることができません。
インストール中にエラーが表示された方はあきらめて下さい…
インストールを始める前に、開発環境は最新化しておきましょう。
まずは、必要なソフトウェアをインストールします。
便利なことに、SDKマネージャーだけで必要なソフトウェアがそろいます
まずは、「x86 System Image」です。
こちらのファイルはAndroidのバージョン毎に用意する必要がありますが、現在 (2013/01/28) 時点でサポートしているのは以下のバージョンのみです。
- Android 4.2 ( API 17 )
- Android 4.1 ( API 16 )
- Android 4.0 ( API 15 )
- Android 2.3 ( API 10 )
次に、冒頭で出てきたHAXMです。
SDKマネージャーの一番下にでてきます。
SDKマネージャーではダウンロードしただけで、インストールは行われていません。
ダウンロードしたファイルは以下のフォルダに保存されます。
[Android SDKインストールフォルダ]sdkextrasintelHardware_Accelerated_Execution_Manager
このフォルダ以下のexeを実行して、HAXMをインストールします。
IntelHaxm.exe
途中、割り当てるメモリ量を聞かれますが、デフォルトのままでOKでしょう。
エラーが出力されインストールできない場合は、CPUがVT-xをサポートしていないことが考えられます。(あきらめてください…)
以上で準備が整いました。
AVDマネージャーを起動し、エミュレーターのセットアップを行います。
ポイントは以下の二つです。
CPU/ABI | Inten Atom (x86) |
Emulation Option | Use Host GPU |
「Nexus 7」「Android 4.2」で「CPU/ABI」と「Use Host GPU」の設定を変えて実行してみました。
起動ボタンをクリックしてから、右の画面が表示されるまでをストップウォッチで計測しました。
以下のような結果となりました。(その差なんっと8倍!!すごい!!!!)
CPU/ABI | Use Host GPU | 起動までにかかる時間 |
ARM (armeabi-v7a) | OFF | 約120秒 |
ARM (armeabi-v7a) | ON | 約90秒 |
Intel Atom (x86) | OFF | 約19秒 |
Intel Atom (x86) | ON | 約15秒 |
もし以下のようなエラーがで「Nexus 7」のエミュレータが起動しないという場合は、AVDのメモリ設定を変えてみて下さい。
Starting emulator for AVD 'x86' emulator: device fd:732 HAX is working and emulator runs in fast virt mode Failed to allocate memory: 8 This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
RAMが「1024」になっていたら、「512」に変更します。
参考までに上の検証を行った、PC環境を載せておきます。
OS | Windows 7 pro SP1 64bit |
CPU | Core i5-2320 3.00GHz |
メモリ | 8.00 GB |
GPU | GeForce GT 520 |
Windowsエクスペリエンス
プロセッサ | 7.4 |
メモリ (RAM) | 7.6 |
グラフィックス | 4.9 |
ゲーム用グラフィックス | 6.3 |
プライマリ ハードディスク | 5.9 |
体感的に、実機と同等かそれ以上のパフォーマンスが出ているようです。
Googleさん、Intelさん「エミュレータが遅くて使い物にならない!」なんていってすみませんでした(汗