エミュレータは、純粋なソフトウェアとして使用するより、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 以降
AVD: 必要な Android バージョンは次の表のとおりです。
CPU アーキテクチャ システム イメージの要件 X86_64 Android 2.3.3(API レベル 10)以降用の x86 または x86_64 システム イメージ ARM64 Android 5.0(API レベル 21)以降用の arm64-v8a システム イメージ
仮想化拡張機能の要件
コンピュータのプロセッサは、開発環境の要件に加えて仮想化拡張機能をサポートする必要があります。サポートされているプロセッサは次のとおりです。
- Intel Virtualization Technology(VT-x、vmx)を搭載した Intel プロセッサ
- AMD-V(SVM)を搭載した AMD プロセッサ
- Apple シリコン M1 および M2 ファミリー
Intel および AMD プロセッサの追加要件:
Intel と AMD のプロセッサには、第 2 レベルのアドレス変換(Intel EPT または AMD RVI)が必要です。最新の Intel および AMD プロセッサのほとんどは、第 2 レベルのアドレス変換をサポートしています。仮想化拡張機能を提供する第 1 世代の Intel または AMD プロセッサに限り、第 2 レベルのページ変換をサポートしていない可能性があります。
必要な拡張機能をプロセッサがサポートしているかどうかわからない場合は、メーカーのサイトでプロセッサの仕様を確認してください。プロセッサが上記拡張機能をサポートしていない場合、VM アクセラレーションは使用できません。
制限
VM アクセラレーションには次の制限があります。
- VirtualBox、VMware、Docker でホストされている VM など、異なる VM 内で VM アクセラレーションを使用するエミュレータを実行することはできません。VM アクセラレーションを使用するエミュレータは、ホスト コンピュータで直接実行する必要があります。
- 一部のオペレーティング システムとハイパーバイザでは、VM アクセラレーションを使用するエミュレータと、別の仮想化テクノロジーを使用するソフトウェアを同時に実行することはできません。このようなソフトウェアの例としては、仮想マシン ソリューション、特定のウイルス対策プログラム、一部の不正対策ソリューションなどがあります。このような状況は、Hyper-V がオフになっている Windows で最も多く発生します。このようなソフトウェアのほとんどは、問題なく Android Emulator と共存できます。しかし、競合が発生した場合は、VM アクセラレーションを使用するエミュレータをこのようなソフトウェアと同時には実行しないことをおすすめします。
ハイパーバイザについて
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 AEHD (version 2.0) is installed and usable. accelWindows 用ハイパーバイザの選択肢は複数あります。そのため、表示内容はこの例と異なる場合があります。たとえば、メッセージ内に GVM(AEHD の以前の名称)、WHPX、HAXM のうちいずれかのキーワードが出現することがあります。
macOS:
janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check accel: 0 Hypervisor.Framework OS X Version 13.2 accel
Linux:
janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check accel: 0 KVM (version 12) is installed and usable.
Windows で VM アクセラレーションを設定する
Windows 上の VM アクセラレーションでは、次の 3 つのハイパーバイザのいずれかを使用できます。
- Android Emulator ハイパーバイザ ドライバ(AEHD)
- Windows Hypervisor Platform(WHPX)
- Intel Hardware Accelerated Execution Manager(HAXM)
Windows でハイパーバイザを選択する
このセクションでは、使用するハイパーバイザを決定するための条件について説明します。 以降のセクションでは、各ハイパーバイザを使用して VM アクセラレーションを設定する手順について説明します。
HAXM の開発終了に伴い、エミュレータ 33.xxx 以降では HAXM が非推奨になりました。Intel プロセッサでは、Intel HAXM の代わりに Android Emulator ハイパーバイザ ドライバ(AEHD)が使用されます。
条件(エミュレータ 33.xxx 以降) | ハイパーバイザ |
---|---|
Hyper-V を Android Emulator と同時に実行する必要がない。 | Android Emulator ハイパーバイザ ドライバを使用します。 |
Hyper-V は Android Emulator と同時に実行する必要がある。 | WHPX を使用します。 |
32.xxx 以前のエミュレータの場合は、引き続き以前の基準に従って、使用するハイパーバイザを決定してください。
条件(エミュレータ 32.xxx 以前) | ハイパーバイザ |
---|---|
Intel プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない。 | Intel HAXM を使用します。 |
AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない。 | Android Emulator ハイパーバイザ ドライバを使用します。 |
Intel または AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がある。 | WHPX を使用します。 |
Windows で Android Emulator ハイパーバイザ ドライバ(AEHD)を使用する VM アクセラレーションを設定する
Android Emulator ハイパーバイザ ドライバをインストールして使用するには、コンピュータが次の要件を満たしている必要があります。
- 仮想化拡張機能を備えた Intel または AMD プロセッサ。
64 ビット Windows 11、Windows 10、Windows 8、または Windows 7(32 ビット Windows はサポートされません)
Windows 11、Windows 10、または Windows 8 では、[Windows の機能] ダイアログで [Hyper-V] をオフにする必要があります。
AMD プロセッサでは、Android Studio 4.0 Canary 5 以降の SDK Manager を使用して Android Emulator ハイパーバイザ ドライバをインストールできます。
Intel プロセッサでは、Android Studio Flamingo 以降の SDK Manager を使用して Android Emulator ハイパーバイザ ドライバをインストールできます。
SDK Manager からインストールするには、次の手順を行います。
- [Tools] > [SDK Manager] を選択します。
- [SDK Tools] タブをクリックし、[Android Emulator hypervisor driver] を選択します。
- [OK] をクリックして、Android Emulator ハイパーバイザ ドライバをダウンロードし、インストールします。
インストール後、次のコマンドライン コマンドを使用してドライバが正しく動作していることを確認します。
AEHD 2.1 以降
sc query aehd
ステータス メッセージには次の情報が含まれます。
SERVICE_NAME: aehd ... STATE : 4 RUNNING ...
次のエラー メッセージが表示された場合は、BIOS で仮想化拡張機能が有効になっていない、または、Hyper-V が無効になっていないことを意味します。
SERVICE_NAME: aehd ... STATE : 1 STOPPED WIN32_EXIT_CODE : 4294967201 (0xffffffa1) ...
AEHD 2.0 以前
sc query gvm
ステータス メッセージには次の情報が含まれます。
SERVICE_NAME: gvm ... STATE : 4 RUNNING ...
次のエラー メッセージが表示された場合は、BIOS で仮想化拡張機能が有効になっていない、または、Hyper-V が無効になっていないことを意味します。
SERVICE_NAME: gvm ... STATE : 1 STOPPED WIN32_EXIT_CODE : 4294967201 (0xffffffa1) ...
Android Emulator ハイパーバイザ ドライバは GitHub からダウンロードしてインストールすることもできます。
ドライバ パッケージを解凍した後、管理者権限によりコマンドラインで silent_install.bat
を実行します。
管理者権限によりコマンドラインで次のコマンドを使用して、Android Emulator ハイパーバイザ ドライバをアンインストールします。
AEHD 2.1 以降
sc stop aehd
sc delete aehd
AEHD 2.0 以前
sc stop gvm
sc delete gvm
Windows で Intel HAXM を使用する VM アクセラレーションを設定する
Intel HAXM をインストールして使用するには、コンピュータが次の要件を満たしている必要があります。
- Virtualization Technology(VT-x)、Intel EM64T(Intel 64)機能、Execute Disable(XD)ビット機能が有効な Intel プロセッサ
- 64 ビット Windows 11、Windows 10、Windows 8、または Windows 7(または 64 ビット プロセッサを使用する 32 ビット バージョンのオペレーティング システム)
Windows 11、Windows 10、または Windows 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 をアンインストールするには、インストーラまたは Windows コントロール パネルを使用します。Intel HAXM をアンインストールする場合は、実行中の x86 エミュレータをすべてシャットダウンします。
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] をクリックします。
インストールが完了したら、コンピュータを再起動します。
Hyper-V を無効にする場合に再確認する
Android Emulator ハイパーバイザ ドライバまたは Intel HAXM を使用するには、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 の問題トラッカーでバグを報告してください。
macOS で VM アクセラレーションを設定する
macOS の場合、Android Emulator は組み込みの Hypervisor.Framework を使用します。これには macOS v10.10(Yosemite)以降が必要です。
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
コマンドを実行します。sudo 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