[dup] Androidの超速エミュレータを導入する

  • 158
    いいね
  • 1
    コメント

重複した記事があるとの指摘がありました。
下記のほうが図とかステップが充実しています!
http://qiita.com/items/8bc1a11f1382409f1d2a

【もはやエミュレータとは言わせない】

そもそも超速エミュレータが必要な理由

AndroidアプリやWebアプリを作る際、OSバージョンが多すぎて実機とか全部揃えていられないので、エミュレータを使ってデバッグすることになると思います。しかしこのエミュレータが非常に重たくて、MacBook Airなんかで使えたものではありません。これはスマホのARMアーキテクチャのCPUを、PCのx86アーキテクチャのCPU上でエミュレートしているためです。

この問題の解決策として、Intelがx86 CPUで直接動作可能なAndroidを配布しています。Androidの各種アプリは基本的にJava製なので、「Java(Dalvik)仮想マシン」の層でCPUの違いは吸収され、x86版でも全く差異なく動作します。

超速エミュレータの導入手順

超速エミュレータを使用するには、通常のAndroid SDKに加えて2つのコンポーネントが必要になります。

  • CPUの仮想化支援機能を利用するカーネルモジュール
  • x86版AndroidのOSイメージ

カーネルモジュールの導入方法

Intel® Hardware Accelerated Execution ManagerからOSにあったものをダウンロードし、インストールします。途中で仮想マシンに割り当てる(最大?)メモリ容量について聞かれますが、デフォルトで良さそうです。なおMacの場合、再度インストーラを実行することで容量を変更できるようです。
(注)2013/02/04現在:少なくともMountain Lionについては、release_1.0.4-hotfixの方をインストールしてください。通常版をインストールすると、Mac OSがクラッシュします。

Macの場合は、インストール後に下記のコマンドを実行する必要が有るようです。(再起動ごとに実行が必要なのかはまだ試していません・・。)

sudo kextload -b com.intel.kext.intelhaxm

OSイメージの入手方法

こちらは簡単で、SDKのディレクトリ/tools/androidで起動できるAndroid SDK Managerから、数クリックでインストール出来ます。Androidの各バージョンに「Intel x86 Atom System Image」という項目がありますので、これにチェックを入れてインストールします。
Intel x86 Atom System Imageを選択

エミュレータの設定、起動方法

Android Virtual Device Manager上で、仮想デバイスを追加or編集する際に、TargetとCPUを、インストールしたx86版のものに設定するだけで完了です。CPU部分にx86と書かれていればOKです。後は、通常通りeclipseまたはManagerから起動すると、超速で立ち上がってきます。

CPUをx86に設定

※「HAX is working and emulator runs in fast virt mode」のように表示されない場合は、CPUの仮想化機能が有効(搭載されていて、BIOSでEnabledにされている)かどうか、またカーネルモジュールがインストールされてロード済みかどうかもう一度確認してください。

追記:Android 2.3.3のx86エミュレータを使う場合

イメージのディレクトリ構成にバグがあるので、VM作成時に「userdata.imgがない」みたいなエラーが出てしまいます。
予め、解凍したディレクトリ/sdk/system-images/android-10/x86/images/x86の中身を、解凍したディレクトリ/sdk/system-images/android-10/x86にコピーしておけば解決します。

Macはこちらでどうぞ↓

cd sdk/system-images/android-10/x86/images/x86/
ln -s images/x86/* ./  

Happy 超速 Android Hacking!