Android

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

More than 1 year has passed since last update.

重複した記事があるとの指摘がありました。

下記のほうが図とかステップが充実しています!

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!