ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

Android仮想デバイス(AVD)の高速化

ライターさん(最終更新日時:2014/7/23)投稿日: アドバイス受付中!

印刷用のページを表示する

Android仮想デバイスの高速化

Androidでは、仮想デバイス(AVD、Android Virtual Device)と呼ばれるエミュレーターを使い、実機がなくともアプリケーションのデバッグを行うことができます。Android 4.0以前の仮想デバイスは、ARM CPUのエミュレーションのみでした。x86或いはx64のCPU上では、異なるCPUのエミュレーションを行うため、起動に時間がかかったり動作が重かったりと、使い易いものとは言えませんでした。4.0.3以降になって、Intel x86のエミュレーションが追加されました。さらにCPUの仮想化支援機能や、ホストGPUサポートと組み合わせることにより、高速な仮想デバイスを作成することができるようになりました。

また、Android SDK r21より、Android仮想デバイスマネージャー(AVD Manager)のGUIが一新されたため、書籍などを参考にしていると画面写真と一致しないことでしょう。ここでは、r21の仮想デバイスマネージャーでの操作の仕方の紹介も兼ねています。


Windows上で仮想化支援機能を利用するためには

HAXMのインストール

Windowsでは、Intelの提供するHAXM(Hardware Accelerated Execution Manager)をインストールすることで、仮想化支援機能を使ってAVDを動作させることができます。ただし、CPUがIntel VTと呼ばれる仮想化支援機能をサポートしている必要があり、必然的に使用できるのはIntelのCPUのみということになります。


HAXMをインストールするには、まずSDKマネージャーでインストーラーをダウンロードします。下図のように、Extrasを展開したリストの一番下にあります。 

1.png


なお、上記からダウンロードできるソフトウェアは、インテルの下記サイトで配布されているものと同一です。かつてのバージョンでは、Windows 8.1でHAXMを使用すると、CRITICAL_STRUCTURE_CORRUPTIONという例外を発生してOSが強制再起動されてしまう不具合がありましたが、現在(Android SDK ManagerでRev.が4と表記されている)は解消されています。

http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager 

10.png


SDKマネージャーでの操作はインストーラーをダウンロードするのみです。操作を完了すると、Android SDKのインストールフォルダーからの相対パスでextras\intel\Hardware_Accelerated_Execution_Manager(下図参照)にHAXMのインストーラーが用意されます。 

9.png


このフォルダーに展開されたIntelHaxm.exeを実行します。なお、使用しているCPUがIntel VTをサポートしていなかったり、サポートされていてもBIOSで無効化されていると、インストーラーで警告が表示され、インストールすることはできません。 

2.png


インストーラーが起動したら、特にパラメーターを変更することなく、デフォルト設定のままインストールしましょう。

3.png


システムイメージのインストール

HAXMを使用した仮想デバイスを作るためには、Androidのバージョンごとに下図のようにIntel x86 Atom System Imageをインストールしておく必要があります。x86システムイメージは、Android 2.3.3(APIレベル10)およびAndroid 4.0.3(APIレベル15)以降で提供されています。

 

4.png

 

5.png


ポイント

  • Android 2.3.3のx86システムイメージは、かつてはアドオンとして提供されていました。r21より標準パッケージの一部として提供されるようになったのですが、上図の箇所からインストールしてAVDを作成しようとすると、ファイルのコピーに失敗してAVDが作成できないバグがありました。このバグは、2013年5月にリリースされたr22で修正されています。使用している環境がまだr22になっていなければ、先にSDK Toolsのアップデートを行いましょう。

  • なお、アドオンとしてのシステムイメージは、現在でもIntelのサイトで提供されています。内容は、上図の操作でインストールされるシステムイメージと同一なので、そちらを改めて導入する必要はないでしょう。

仮想デバイスの作成

後は通常通り仮想デバイスマネージャーを操作し、エミュレーションするCPUにIntel Atom x86を選択するだけです。下図のように、「CPU/ABI」の項目で「Intel Atom (x86)」を選択します。この項目が出現しない場合は、システムイメージのインストールが正しくできていませんので、確認し直しましょう。また、Android 4.0(APIレベル14)以降では、「ホストGPUを使用する」にチェックを入れることで画面描画を高速化することができますので、ぜひとも併用しましょう。ただし、ターゲットがAndroid 2.3.3のときはHAXMとホストGPUサポートの併用ができないので、チェックを入れないようにしてください。 

11.png


なお、HAXMインストール以前に作成した仮想デバイスは正常に動作しない可能性があります。そのようなときは、仮想デバイスマネージャー上から一旦削除し、改めて作成してみてください。


Linux上で仮想化支援機能を利用するためには

KVMのインストール

Linuxでは、KVM(Kernel-based Virtual Machine)という仮想マシン機能を利用することで、同様にx86エミュレーションを高速化することができます。なお、HAXMと異なり、KVMはAMD-Vもサポートしているため、AMDのプロセッサでも高速化が可能と思われます。


ここでは、Debian系Linuxでの操作例を記します。


まず、CPUがKVMに対応しているかどうかチェックします。使っているCPUのスペックを十分理解していて、Intel VTやAMD-Vに対応しているという確信があれば、このステップは飛ばしても構いません。


$ sudo apt-get install cpu-checker

$ kvm-ok


kvm-okコマンドの結果として次のような表示が出たら、KVMは利用可能です。


INFO: /dev/kvm exists

KVM acceleration can be used


一方、


INFO: Your CPU does not support KVM extensions


という表示が出たら、そのシステムではKVMを利用することができません。CPUは仮想化支援機能をサポートしているはずなのにこのような表示が出る場合は、BIOSによって無効化されている可能性がありますので、チェックしてみましょう。


KVMが利用可能であることがわかったら、必要なモジュールをインストールし、そのモジュールが利用するグループに自ユーザーを追加します。


$ sudo apt-get install qemu-kvm libvirt-bin

$ sudo adduser <ユーザー名> kvm

$ sudo adduser <ユーザー名> libvirtd


ディストリビューションによっては、グループへの追加も同時に行われるようなので、グループへの追加操作は不要の場合もあります。グループへの追加を反映させるため、ここで一旦ログアウトしてログインしなおしましょう。


後はWindowsと同様に、x86システムイメージをインストールして仮想デバイスを作成するだけです。


実際の動作を動画で紹介

デモ用仮想デバイス

仮想化支援機能を使用したx86エミュレーションによるAVDの作成から動作までを、動画で紹介します。なお、デモンストレーションのために、ベンチマークアプリケーションである0xbench(https://code.google.com/p/0xbench/)を使用しました。


デモに使用したPCのスペック

使用したPCの環境は以下の通りです。


CPU: Core i7-3770(3.4GHz、4コア+HT)

メモリ: 8GB

グラフィック: Intel HD 4000 Graphics

OS: Windows 8 Pro 64bit および Linux Mint 14 64bit Cinnamon


Android 4.2.2のAVD

WindowsとLinuxで、それぞれ画面サイズ1280x800(mdpi)のAVDを作成し、3D描画のベンチマークを実行したときの様子です。


  • Windows 


  • Linux 


Android 2.3.3のAVD

WindowsとLinuxで、それぞれ画面サイズ480x800(mdpi)のAVDを作成し、3D描画のベンチマークを実行したときの様子です。なお、Windows版Android 2.3.3のAVDでは、Open GL Blendingのデモの動作が著しく遅く、評価にならないため、実行していません。


  • Windows 


  • Linux 


いずれもLinuxの方が動作が軽快なことがわかるかと思います。特に、Android 4.xのAVDでホストGPUサポートを併用すれば、3D描画などを行ってもネイティブ動作と見紛うほど滑らかに動きます。快適なデバッグのためには、スキルに自信のある方はLinuxで開発環境を構築するのも良いでしょう。



ヒント

  • ここまで、SDKマネージャーの表記に合わせて「Android 2.3.3のAVD」と記していますが、システムイメージのバージョンは実はAndroid 2.3.7です。Android開発元での管理上は、APIレベル10に区分されるバージョンは2.3.3~2.3.7まであり、市販端末でも一部2.3.4以降が用いられているものもあります。ただし、API仕様的には全て同一なので、この違いによって開発に支障が生じることはないでしょう。


注意点

スナップショットが使えない

仮想化支援機能を利用すると仮想デバイスの動作は速くなるのですが、スナップショット(仮想デバイスを閉じたときの状態をファイルに記録しておき、次に起動するときに閉じたときの状態で復元できる機能)が使えなくなるという欠点もあります。どちらのメリットを取るかは利用者次第ですが、制作したアプリケーションを仮想デバイス内で快適に動作させられるので、仮想化支援機能を利用するメリットのほうが大きいのではないでしょうか。


それでもCPUパワーは必要

例えこの高速化を施しても、使用しているPCの能力が根本的に足りなければ、大した効果は得られません。少なくとも、Core i5クラスでクロック2.5GHz以上(できれば3.0GHz以上)程度のCPUパワーは必要でしょう。


複数ユーザーで利用できない

Windows用のHAXMは、現状ではインストールしたユーザーでAVDを起動したときしか正常に機能しないようです。複数のユーザーを作成している環境では、注意が必要です。


改版履歴

(2012/11/24)初版

(2013/05/21)体裁崩れ修正、全面的改版

(2013/05/27)動画差し替え

(2014/02/05)画像一部差し替え、Windows 8.1用のhotfix版についての記述

(2014/07/23)HAXMの記述修正、画像一部差し替え


このノートのライターが設定した関連知恵ノート

アドバイス(このノートのライターへのメッセージ)を送る

このノートはどうでしたか?  いいと思ったことや、こうしたらもっとよくなるといったメッセージを送りましょう! ノートの内容やライターについて質問がある場合は、Q&Aから質問してみましょう

アドバイスを送るには、
Yahoo! JAPAN IDでのログインおよび
Yahoo!知恵袋の利用登録が必要です。

利用登録ナビへ

感想アドバイス履歴

  • 送信日時:2014/03/01 21:00:07

    bibarudyi_haruさん

    助かった

  • 送信日時:2013/07/24 09:40:59

    age_tsuzukuさん

    助かった

もっと見る

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

この知恵ノートのライター

グレード

グレード知恵ノートのグレード:3-3

カテゴリマスター

keicha_hrsさん

ピックアップ

お尻や足の贅肉にさよなら、本...
本にできない「正しい」下半身ダイエットなぜ「本にできない...
自動車税で「損」をしないため...
自動車やバイクなどを所有すると「税金」がかかりますが、そ...
● ウイルス性胃腸炎 ● から復活...
はじめに 平成23年の大晦日から平成24年の正月にかけて、不幸...
知恵ノートを書いてみませんか?知恵ノートの書き方はこちら

知恵ノートとは?

役立つ知恵情報は、Yahoo!知恵袋公式Twitter@yahoochiebukuroをフォロー
本文はここまでです このページの先頭へ