NO_NAME

適当に技術・仕事・ライフハックの話を書いていく予定です。

仮想マシンアクセラレーションによるエミュレータの高速化

最近のCPUは仮想マシンを走らせるため拡張が組み込まれており、それを利用してAndroidエミュレータを高速化することができる。
詳しくは http://developer.android.com/tools/devices/emulator.html#accel-vm を参照。
先に言っておくが、これを実行してもiPhoneエミュレータほどは速くならないし、起動もそこまで速くならない。
ただ起動後の動作はこれまでのAndroidエミュレータと比べると大分ましになる。

CPUの要件のどちらかの仮想化技術を保持していることなので、Intel CPUの場合はたいていの場合みたいしているはず。

ただしこの方法には4つほど制限がある

  • x86 system imageが必要。現時点(2012/07/27)でAndroid SDK Managerで配布されているのは2.3.3(API 10)と4.0.3(API 15)の二種類のみ。
  • VMWareVirtualBoxなどの仮想マシン内では利用できない
  • VMWareVirtualBoxなどのVMドライバとは同時に使用できない
  • OpenGLのエミュレーションは実デバイスと同じレベルでは実行できないかもしれない。

インストール手順

  1. Android SDK ManagerでSDK Toolsをリビジョン18以上にアップデートする。17でもこの機能は動くが、experimentalとなっているので18以上が良いと思う。
  2. Android SDK ManagerでExtrasにあるIntel Hardware Accelerated Execution Managerをインストールする。Android SDK Managerで落としただけではインストールされないので別途作業が必要。
    プラットフォーム毎に違う手順になるのでMacの場合の作業手順を記述する。
    1. Intel Hardware Accelerated Execution Managerが
      <sdk>/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg
      にダウンロードされるので実行してインストールする。
    2. インストール後、
      kextstat | grep intel
      を実行し、
      com.intel.kext.intelhaxm
      となっていればインストールに成功している。
  3. Android SDK Managerで動かしたいバージョンのx86 system imageをインストールする。現時点(2012/07/27)では2.3.3(API 10)と4.0.3(API 15)の2バージョンのみ配布されている。
  4. AVD Managerを立ち上げ、x86 system imageを使ったAVDを作成する。Targetに先ほどインストールしたx86 system imageのバージョンを指定すると、CPU/ABIでx86を選択できるようになるので選択する。ただし、TargetにGoogle APIsを指定するとCPU/ABIでx86 system imageを選択できないので注意。
  5. 作成したAVDを実行する。ちなみに初回起動は遅い。