2012年3月23日

Android SDKをRevision 17に更新したらエミュレータがサクサクに!

Android SDK ToolsがRevision 17にアップデートされたので早速更新した。今回は比較的大きな更新になっている様だ。
Android SDKアップデート、Windows/Macでエミュレータが高速に | マイナビニュース

Updated SDK Tools and ADT revision 17 | Android Developers Blog

特に興味を惹かれたのが、
WindowsおよびMac OS Xにおいてエミュレータが仮想モードでAndroidx86システムイメージをサポートし、Androidが高速に動作するようになった。
という部分。

早速ここに書かれている手順通りにやってみた。
Using the Android Emulator | Android Developers


ただし、Intel VTによる仮想化支援を使うには、次の制限があるとの事。
  • ARMベースではなくx86のシステムイメージを使ったエミュレータしか動かせない。
  • 仮想化された環境内では動かせない。
  • 同一PC上でIntel VTを使う他の仮想化ソフト(VMwareやVirtualBoxなど)と同時に動かす事は出来ない。
  • OpenGL ESを使うアプリのパフォーマンスは実機ほどは出ない。



まずは、「Android SDK Manager」でx86のシステムイメージをインストールする。
現時点では、APIレベル10(Android 2.3.3)用のものしか無いみたいだ。


次に、SDK Managerのリストの一番下の方にある「Extras」の中の「Intel Hardware Accelerated Execution Manager」を選択してこれもインストール。
インストール後、コマンドラインから
sc query intelhaxm
を実行して、
SERVICE_NAME: intelhaxm
       ...
       STATE              : 4  RUNNING
       ...
と表示されればOK。



インストール完了後、AVD作成ダイアログのターゲットに「Intel Atom x86 System Image」が追加された。これを選択してAVDを作成すると、エミュレータ実行時にIntel VTによる仮想化支援機能が使われて動作が速くなるという事らしい。



早速エミュレータを起動してみると...

お、確かにブラウザが一瞬で起動する様になっている。

サンプル「APIDemos」を動かしてみる。
従来のエミュレータだとかなりカクカクしていたOpenGL ESのデモも、上述の様に実機ほどのパフォーマンスは出ないと但し書きはあったものの、x86イメージのエミュレータだとかなりスムーズに動いている。

(上)従来のエミュレータ (約8.5FPS)
(下)x86システムイメージを使ったエミュレータ (約27FPS)



普段からエミュレータ上で開発をしている人にはかなり嬉しい改善になりそうだ!


と思ったのだけれど...、

ここまで書いてから、さてVirtualBoxでいつも使っている仮想マシンを起動しようとしたら、「仮想マシンを起動出来ません...云々」のエラーが出てしまった。。。

「なんださっきインストールしたIntelのHAXMとか言うサービスを止めればいいんでしょ。」と思ってコマンドラインから、
sc stop intelhaxm
を実行。サービスが止まっているのを確認してから再度VirtualBoxの起動を試みても、やっぱり同じエラーが出る。検索したらMacでもやはり同じ問題に遭遇している人が居た。
HAXM stops VirtualBox fro ... - Intel® Software Network
PCを再起動しても同じなので、結局あきらめて「Intel Hardware Accelerated Execution Manager」をアンインストールする事にした。

アンインストール後は無事VirtualBoxの仮想マシンが起動出来たので、このIntelのHAXMサービスが原因だった事は間違いないと思う。

という事で、VirtualBoxとの相性は良くないみたいだ。残念。:-(









.