2012年3月26日月曜日

Android SDK・ADT rev.17でエミュレーターの高速化を試してみた。確かに速い。しかし・・・

つい先日、AndroidのSDKがバージョンアップした。

Updated SDK Tools and ADT revision 17 | Android Developers Blog

毎度お馴染みで色々細かいこと書いてあって・・・どっちみちアップデートしなきゃいけないわけで、そういったところは大体流すことになるわけだけど、ここは気になった。

・・・
Thanks to contributions to AOSP from Intel, the emulator now supports running x86 system images in virtualization mode on Windows and Mac OS X. This allows the emulator running at near native speed. The drivers are available through the SDK Manager.
・・・

なにやらIntelのドライバを使うことによって、エミュレータのスピードがネイティブに近いところまで出るようになるらしい!

実はAndroidのエミュはむっちゃ遅いからイライラしてた。ここは一発やってみようじゃないか。ここを参考にする。
http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

まずは Help > Check for Update でSDK、ADTをアップデートする。


Window > Android SDK Manager。


Extrasフォルダの「Intel Hardware Accelerated Execution Manager」をチェックしてインストールする。


(SDK HOME)/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgを開いて「IntelHAXM.mpkg」をインストールする。

インストール前に、エミュが実行されてる時の最大メモリ使用量を指定するステップがある。デフォルトでは2048MBになってるのだけど、Androidのエミュで2GBは多すぎだろ〜と思って1024MBにしといた。


次にターミナルでこのようにして正常にインストールされたかを確認する。再起動の必要はない。

adam:~ jun$ kextstat | grep intel
126 0 0xffffff7f807af000 0x12000 0x12000 com.intel.kext.intelhaxm (1) <7 5 4 3 1>

インストールしたものはカーネルエクステンションらしい。なるほど。ドキュメントにもIntel VTを使ってエミュを高速化するって書いてある。このカーネルエクステンションがVTしてくれるわけだ。

インテル バーチャライゼーション・テクノロジー - Wikipedia

ここで、ドキュメントには「x86-based AVD」でアプリを起動しろと書いてあるのだけど、そんなの無い。

どうやらSDK Managerであらかじめx86のシステムイメージをインストールしておかなければならないらしい。

で、見てみると・・・


「Intel Atom x86 System Image」というのがあるから、これだろう。しかし、IntelのシステムイメージはAPIレベル10用しかないようだ。

ということは、APIレベル10(Android 2.3.3)以外のAPIレベルのエミュは高速化できない、ということだろう_| ̄|○

とにかく、このシステムイメージをインストールしてみよう。

そして、Window > AVD Manager から「New」で「Name:」に「API_Level_10_x86」とでも入力して、「Target:」で「Intel Atom x86 System Image(Intel Corporation) - API Level 10」を選択して「Create AVD」。


Run > Debug Configurations


左のタブからデバッグしたいアプリの設定を選んでコピーする。設定名は「アプリ名 x86」とでもしておく。x86用の設定を選択して左の「Target」タブを開く。「Automatic」ラジオボタンを選択し、先ほど作ったエミュで起動するように「API_Level_10_x86」にチェックを入れる。


そして最後に、当然「Debug」すると、いつものようにエミュが起動する。ただ、ここが違う。


いつもは「emulator-arm」となってるものね。

OSの起動からしてむっちゃ速い。数秒で起動完了。アプリを動かしてみても、確かに速い。

あとは、他のAPIレベル用のx86のシステムイメージがもっと出るといいな。