エミュレータは、純粋なソフトウェアとして使用する場合より、CPU、GPU、モデムなどのマシンのハードウェアと連携した方が最適に動作します。マシンのハードウェアを使用してパフォーマンスを向上させる機能をハードウェア アクセラレーションと呼びます。
エミュレータはハードウェア アクセラレーションを使用して、主に次の 2 つの方法でエクスペリエンスを改善できます。
- 画面レンダリングを改善するグラフィック アクセラレーション
- 実行速度を向上させる仮想マシン(VM)アクセラレーション
ハードウェア アクセラレーションは、ほとんどのマシンでデフォルトで有効になっています。このページでは、マシンで有効になっていない場合にグラフィック アクセラレーションと仮想マシン(VM)アクセラレーションを設定してエミュレータのパフォーマンスを向上させる方法について説明します。
グラフィック アクセラレーションを設定する
グラフィック アクセラレーションでは、コンピュータのハードウェア(通常は GPU)を使用して、画面のレンダリングを高速化します。Android デバイスは、OpenGL for Embedded Systems(OpenGL ES または GLES)を使用して、画面上に 2D グラフィックと 3D グラフィックの両方をレンダリングします。
AVD Manager で Android Virtual Device(AVD)を作成するとき、エミュレータでハードウェアとソフトウェアのどちらを使用して AVD の GPU をエミュレートするかを指定できます。通常はより高速であるハードウェア アクセラレーションをおすすめします。ただし、コンピュータでエミュレータと互換性のないグラフィック ドライバを使用している場合は、ソフトウェア アクセラレーションを使用する必要があります。
デフォルトでは、エミュレータは、コンピュータの設定に基づいて、ハードウェアかソフトウェアのいずれのグラフィック アクセラレーションを使用するかを決定します。GPU ハードウェアとドライバに互換性がある場合、エミュレータは GPU を使用します。互換性がない場合、エミュレータはソフトウェア アクセラレーション(つまり、コンピュータの CPU)を使用して GPU 処理をシミュレートします。
コマンドラインからエミュレータを起動する場合、その仮想デバイス インスタンスに対する AVD のグラフィック アクセラレーション設定をオーバーライドできます。
要件
グラフィック アクセラレーションを使用するには、開発環境に次のものが必要です。
- SDK Tools: 最新リリースが推奨されます(バージョン 17 以降)
- SDK Platform: 最新リリースが推奨されます(Android 4.0.3 リビジョン 3 以降)
AVD Manager でグラフィック アクセラレーションを設定する
AVD のグラフィック アクセラレーションを設定するには、次の手順を行います。
- AVD Manager を開きます。
- 新しい AVD を作成するか、既存の AVD を編集します。
- [Verify Configuration] ウィンドウで、[Emulated Performance] セクションを見つけます。
- [Graphics] オプションの値を選択します。
- [Finish] をクリックします。
コマンドラインからグラフィック アクセラレーションを設定する
コマンドラインから AVD を実行するときにグラフィック アクセラレーション タイプを指定するには、次の例に示すように、-gpu
オプションを指定します。
emulator -avd avd_name -gpu mode [{-option [value]} ... ]
mode
は、次のオプションのいずれかの値に設定できます。
auto
: コンピュータの設定に基づいて、ハードウェアまたはソフトウェアのグラフィック アクセラレーションがエミュレータにより選択されます。host
: ハードウェア アクセラレーションにコンピュータの GPU を使用します。これは通常、エミュレータで最高のグラフィック品質とパフォーマンスを実現するオプションです。ただし、グラフィック ドライバで OpenGL のレンダリングに問題が発生する場合は、swiftshader_indirect
またはangle_indirect
オプションを使用しなければならないことがあります。swiftshader_indirect
: クイックブートと互換性のあるバリアントの SwiftShader を使用して、ソフトウェア アクセラレーションでグラフィックをレンダリングします。このオプションは、コンピュータでハードウェア アクセラレーションを使用できない場合、host
モードの代替として使用できる優れたオプションです。angle_indirect
: (Windows のみ)クイックブートと互換性のあるバリアントの ANGLE Direct3D を使用して、ソフトウェア アクセラレーションでグラフィックをレンダリングします。このオプションは、コンピュータでハードウェア アクセラレーションを使用できない場合、host
モードの代替として使用できる優れたオプションです。ANGLE は OpenGL の代わりに Microsoft DirectX を使用するため、ほとんどの場合、ANGLE のパフォーマンスはhost
モードを使用した場合と同様です。Windows では、ほとんどのケースで Microsoft DirectX ドライバのほうが OpenGL ドライバよりも問題が発生しません。このオプションは Direct3D 11 を使用するため、Windows 10、Windows 8.1、または Windows 7 Platform Update をインストールした Windows 7 SP1 が必要です。
guest
: ゲスト側のソフトウェア レンダリングを使用します。このオプションの場合、エミュレータのグラフィック品質とパフォーマンスが最も低くなります。
次の mode
オプションのサポートは終了しています。
swiftshader
: バージョン 27.0.2 でサポートが終了しました。代わりにswiftshader_indirect
を使用してください。angle
: バージョン 27.0.2 でサポートが終了しました。代わりにangle_indirect
を使用してください(Windows のみ)。mesa
: バージョン 25.3 でサポートが終了しました。代わりにswiftshader_indirect
を使用してください
Android UI に対して Skia レンダリングを有効にする
API レベル 27 以降のイメージを使用する場合、エミュレータで Skia を使用して Android UI をレンダリングできます。これにより、エミュレータでよりスムーズかつ効率的にグラフィックがレンダリングされます。
Skia レンダリングを有効にするには、adb
シェルで次のコマンドを使用します。
su
setprop debug.hwui.renderer skiagl
stop
start
VM アクセラレーションを設定する
VM アクセラレーションは、コンピュータのプロセッサを使用して、エミュレータの実行速度を大幅に向上させます。ハイパーバイザと呼ばれるツールは、コンピュータのプロセッサが提供する仮想化拡張機能を使用してこの操作を管理します。このセクションでは、VM アクセラレーションを使用するための要件の概要と、各オペレーティング システムで VM アクセラレーションを設定する方法について説明します。
全般的な要件
エミュレータで VM アクセラレーションを使用するには、このセクションに記載されている全般的な要件を満たすコンピュータが必要です。コンピュータは、それ以外にもオペレーティング システムに固有の要件も満たしている必要があります。
開発環境の要件
VM アクセラレーションを使用するには、開発環境で次の要件を満たす必要があります。
- SDK Tools: バージョン 17 以降。推奨バージョンは 26.1.1 以降
- x86 ベースのシステム イメージを使用する AVD。Android 2.3.3(API レベル 10)以降で利用可能
仮想化拡張機能の要件
開発環境の要件に加えて、コンピュータのプロセッサは、次の仮想化拡張テクノロジーのいずれかをサポートする必要があります。
- Intel Virtualization Technology(VT、VT-x、vmx)拡張機能
- AMD Virtualization(AMD-V、SVM)拡張機能
最新のプロセッサのほとんどは、上記の仮想化拡張機能をサポートしています。プロセッサが拡張機能をサポートしているかどうかわからない場合は、メーカーのサイトでプロセッサの仕様をご確認ください。プロセッサが上記拡張機能のいずれもサポートしていない場合は、VM アクセラレーションを使用できません。
制限
VM アクセラレーションには次の制限があります。
- VirtualBox、VMWare、Docker でホストされている VM など、異なる VM 内では、VM アクセラレーションを使用するエミュレータを実行することはできません。VM アクセラレーションを使用するエミュレータは、ホスト コンピュータで直接実行する必要があります。
- 一部のオペレーティング システムとハイパーバイザでは、VM アクセラレーションを使用するエミュレータと、別の仮想化テクノロジーを使用するソフトウェアを同時に実行することはできません。たとえば、VirtualBox、VMWare、Docker では現在異なる仮想化テクノロジーが使用されており、これらのソフトウェアと、アクセラレーションを使用するエミュレータを同時に実行することはできません。
ハイパーバイザについて
VM アクセラレーションには、コンピュータのプロセッサが提供する仮想化拡張機能を使用するツールであるハイパーバイザが必要です。
ハイパーバイザと VM アクセラレーションを使用できない場合、エミュレータはホスト コンピュータのアーキテクチャに適合するように、VM ブロックのマシンコードをブロックごとに変換する必要があります。この処理は非常に遅くなる可能性があります。ハイパーバイザを使用すると、VM とホスト コンピュータのアーキテクチャが一致するため、エミュレータはハイパーバイザを使用してホスト プロセッサでコードを直接実行できます。この改善により、エミュレータの速度とパフォーマンスの両方が大幅に向上します。
最適なハイパーバイザは、コンピュータのオペレーティング システムと設定によって異なります。詳細については、次のセクションのいずれかをご覧ください。
ハイパーバイザがインストールされているかどうかを確認する
エミュレータの -accel-check
コマンドライン オプションを使用して、ハイパーバイザが現在コンピュータにインストールされているかどうかを確認できます。
次の例は、エミュレータの accel-check
オプションの使用方法を示しています。各例において、Sdk
は Android SDK の場所を示します。
Windows:
c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check accel: 0 HAXM version 7.3.2 (4) is installed and usable. accel
macOS:
janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check accel: 0 HAXM version 7.3.2 (4) is installed and usable. accel
Linux:
janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check accel: 0 KVM (version 12) is installed and usable.
Windows で VM アクセラレーションを設定する
Windows 上の VM アクセラレーションでは、次の 3 つのハイパーバイザのいずれかを使用できます。
- Intel Hardware Accelerated Execution Manager(HAXM)
- Android Emulator Hypervisor Driver for AMD Processors
- Windows Hypervisor Platform(WHPX)
Windows でハイパーバイザを選択する
次の条件を使用して、使用するハイパーバイザを決定します。以降のセクションでは、各ハイパーバイザを使用して VM アクセラレーションを設定する手順について説明します。
条件 | ハイパーバイザ |
---|---|
Intel プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない。 | Intel HAXM を使用します。 |
Intel プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がある。 | WHPX を使用します。 |
AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない。 | Android Emulator Hypervisor Driver for AMD Processors を使用します。 |
AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がある。 | WHPX を使用します。 |
Hyper-V を無効にする場合に再確認する
Intel HAXM または Android Emulator Hypervisor Driver for AMD Processors を使用するには、Hyper-V を無効にする必要があります。ただし、[Windows の機能] ダイアログで [Hyper-V] の選択を解除しても、Hyper-V が無効になるとは限りません。
Windows 10 のかなり多くの機能で、Hyper-V は暗黙的に有効になります。いずれかの機能を有効にした場合に Hyper-V も有効になることが、ユーザーからは認識できない可能性があります。これには次のような機能があります。
- Virtual Machine Platform
- Windows Hypervisor Platform
- Windows Sandbox
- コア分離
- Credential Guard
また、Windows Subsystem for Linux バージョン 2 には Virtual Machine Platform が必要です。つまり、Hyper-V が暗黙的に必要になります。このリストはすべてを網羅したものではないため、ここに含めるべき項目を見つけた場合は、バグを報告してください。
Hyper-V を無効にするときは、上記の機能も無効になっていることを再確認してください。各機能を無効にする方法については、Microsoft のドキュメントと下記の例を参照してください。
一部のプラットフォームでは、Hyper-V をオフに切り替えても、すぐに無効にならないことがあります。この状況が起きた場合、Windows OS からエラーは返されず、[Windows の機能] ダイアログでは Hyper-V は無効になっていると表示されます。この状況が発生した場合は、Microsoft の問題トラッカーでバグを報告してください。
Windows で Intel HAXM を使用する VM アクセラレーションを設定する
Intel HAXM をインストールして使用するには、コンピュータが次の要件を満たしている必要があります。
- Virtualization Technology(VT-x)、Intel EM64T(Intel 64)機能、Execute Disable(XD)ビット機能が有効な Intel プロセッサ
- 64 ビット Windows 10、Windows 8、または Windows 7(または 64 ビット プロセッサを使用する 32 ビット バージョンのオペレーティング システム)
Windows 10 または 8 では、[Windows の機能] ダイアログで Hyper-V 機能をオフにする必要があります。
Intel HAXM ドライバをインストールするには、次の手順を行います。
- SDK Manager を開きます。
- [SDK Update Sites] タブをクリックし、[Intel HAXM] を選択します。
- [OK] をクリックします。
ダウンロードが完了したら、インストーラを実行します。
通常、インストーラは次の場所にあります。
sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
ウィザードを使用してインストールを完了します。
Intel HAXM のインストール後、次のコマンドライン コマンドを使用して、仮想化ドライバが正しく動作していることを確認します。
sc query intelhaxm
ステータス メッセージには次の情報が含まれます。
SERVICE_NAME: intelhaxm ... STATE : 4 RUNNING ...
詳細については、Windows での Intel HAXM のインストール手順をご覧ください。
Intel HAXM カーネル拡張機能で使用可能なメモリ量を調整するには、インストーラを再度実行します。
Intel HAXM をアンインストールするには、インストーラまたは Windows コントロール パネルを使用します。Intel HAXM をアンインストールする場合は、実行中の x86 エミュレータをすべてシャットダウンします。
Windows で Android Emulator Hypervisor Driver for AMD Processors を使用する VM アクセラレーションを設定する
Android Emulator Hypervisor Driver for AMD Processors をインストールして使用するには、コンピュータが次の要件を満たしている必要があります。
- Secure Virtual Machine(SVM)テクノロジーを搭載した AMD プロセッサ
- 64 ビット Windows 10、Windows 8、または Windows 7(32 ビット Windows はサポートされません)
Windows 10 または 8 では、[Windows の機能] ダイアログで Hyper-V 機能をオフにする必要があります。
Android Emulator Hypervisor Driver for AMD Processors は、Android Studio 4.0 Canary 版 5 以降の SDK Manager から、または GitHub からインストールできます。
SDK Manager からインストールするには、次の手順を行います。
- [Tools] > [SDK Manager] を選択します。
- [SDK Tools] タブをクリックし、[Android Emulator Hypervisor Driver for AMD Processors] を選択します。
- [OK] をクリックし、Android Emulator Hypervisor Driver for AMD Processors をダウンロードしてインストールします。
インストール後、次のコマンドライン コマンドを使用してドライバが正しく動作していることを確認します。
sc query gvm
ステータス メッセージには次の情報が含まれます。
SERVICE_NAME: gvm ... STATE : 4 RUNNING ...
次のエラー メッセージが表示された場合は、BIOS で SVM が有効になっていない、または、Hyper-V が無効になっていないことを意味します。
SERVICE_NAME: gvm ... STATE : 1 STOPPED WIN32_EXIT_CODE : 4294967201 (0xffffffa1) ...
Android Emulator Hypervisor Driver for AMD Processors は GitHub からダウンロードしてインストールすることもできます。
ドライバ パッケージを解凍した後、管理者権限によりコマンドラインで silent_install.bat
を実行します。
インストールが正常に完了すると、次の出力が表示されます。
インストールをアップグレードすると、古いドライバのアンインストールに関するメッセージを含む次の出力が表示されます。
管理者権限によりコマンドラインで次のコマンドを使用して、Android Emulator Hypervisor Driver for AMD Processors をアンインストールします。
sc stop gvm
sc delete gvm
Windows Hypervisor Platform を使用する VM アクセラレーションを設定する
WHPX を有効にするには、コンピュータが次の要件を満たしている必要があります。
- Intel プロセッサ: Virtualization Technology(VT-x)、Extended Page Tables(EPT)、Unrestricted Guest(UG)機能のサポート。コンピュータの BIOS 設定で VT-x を有効にする必要があります。
- AMD プロセッサ: MD Ryzen プロセッサが推奨されます。コンピュータの BIOS 設定で仮想化または SVM を有効にする必要があります。
- Android Studio 3.2 ベータ版 1 以降
- Android Emulator バージョン 27.3.8 以降
- Windows 10 以降
Windows に WHPX をインストールするには、次の手順を行います。
- Windows デスクトップで、Windows アイコンを右クリックし、[アプリと機能] を選択します。
- [関連設定] で、[プログラムと機能] をクリックします。
- [Windows の機能の有効化または無効化] をクリックします。
[Windows Hypervisor Platform] を選択します。
[OK] をクリックします。
インストールが完了したら、コンピュータを再起動します。
macOS で VM アクセラレーションを設定する
Mac OS X v10.10 Yosemite 以降では、Android Emulator は組み込みの Hypervisor.Framework をデフォルトで使用し、Hypervisor.Framework の初期化に失敗した場合は Intel HAXM を使用するようフォールバックします。
Hypervisor.Framework を使用できない場合、macOS で VM アクセラレーションを使用するには、Intel HAXM カーネル拡張機能をインストールする必要があります。
Intel HAXM カーネル拡張機能をインストールするには、次の手順を行います。
- SDK Manager を開きます。
- [SDK Update Sites] タブをクリックし、[Intel HAXM] を選択します。
- [OK] をクリックします。
ダウンロードが完了したら、インストーラを実行します。
通常、インストーラは次の場所にあります。
sdk/extras/intel/Hardware_Accelerated_ExecutionManager/IntelHAXMversion.dmg
画面に表示される手順でインストールを実行します。
インストールが完了したら、次のコマンドライン コマンドを使用して、新しいカーネル拡張機能が正しく動作していることを確認します。
kextstat | grep intel
ステータス メッセージには次の拡張機能名が含まれています。これは、カーネル拡張機能が読み込まれていることを示しています。
com.intel.kext.intelhaxm
詳細については、Intel HAXM のインストール手順をご覧ください。
Intel HAXM カーネル拡張機能で使用可能なメモリ量を調整するには、インストーラを再度実行します。
Intel HAXM カーネル拡張機能の使用を停止するには、Intel HAXM カーネル拡張機能をアンインストールします。アンインストールするには、実行中の x86 エミュレータをシャットダウンしてから、コマンドラインで次のコマンドを実行します。
sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh
Linux で VM アクセラレーションを設定する
Linux ベースのシステムは、KVM ソフトウェア パッケージを介して VM アクセラレーションをサポートしています。 Linux システムに KVM をインストールする手順を行い、KVM が有効になっていることを確認します。Ubuntu システムについては、Ubuntu KVM のインストールの説明をご覧ください。
要件
KVM を実行するには、特定のユーザー権限が必要です。KVM のインストール手順で指定されている十分な権限があることを確認してください。
Linux で VM アクセラレーションを使用するには、コンピュータが次の要件も満たしている必要があります。
- Intel プロセッサの場合: Virtualization Technology(VT-x)、Intel EM64T(Intel 64)機能、Execute Disable(XD)ビット機能をサポートしている
- AMD プロセッサの場合: AMD Virtualization(AMD-V)をサポートしている
KVM が現在 Linux にインストールされているかどうかを確認する
エミュレータの -accel-check
コマンドライン オプションを使用して、KVM がインストールされているかどうかを確認できます。または、kvm-ok
コマンドを含む cpu-checker
パッケージをインストールできます。
次の例では、kvm-ok
コマンドの使用方法を示します。
次の方法で、
cpu-checker
パッケージをインストールします。$ sudo apt-get install cpu-checker $ egrep -c '(vmx|svm)' /proc/cpuinfo
出力が 1 以上の場合、仮想化がサポートされています。出力が 0 の場合は、CPU がハードウェア仮想化をサポートしていません。
kvm-ok
コマンドを実行します。$ kvm-ok
想定される出力:
INFO: /dev/kvm exists KVM acceleration can be used
次のエラーが発生した場合は、引き続き仮想マシンを実行できます。ただし、KVM 拡張機能がないと仮想マシンの速度が低下します。
INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used
Linux に KVM をインストールする
次のコマンドを使用して、KVM をインストールします。
Cosmic(18.10)以降:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
Lucid(10.04)以降:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Karmic(9.10)以前:
sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils