エミュレータは、純粋なソフトウェアとして使用するより、CPU、GPU、モデムなどのマシンのハードウェアと連携した方が最適に動作します。マシンのハードウェアを使用してパフォーマンスを向上させる機能をハードウェア アクセラレーションと呼びます。
エミュレータはハードウェア アクセラレーションを使用して、主に次の 2 つの方法でエクスペリエンスを改善できます。
- 画面レンダリングを改善するグラフィック アクセラレーション
- 実行速度を向上させる仮想マシン(VM)アクセラレーション
ほとんどのマシンでは、ハードウェア アクセラレーションがデフォルトで有効になっています。このページでは、マシンで有効になっていない場合にグラフィック アクセラレーションと仮想マシン(VM)アクセラレーションを設定し、エミュレータのパフォーマンスを向上させる方法について説明します。
グラフィック アクセラレーションを設定する
Android デバイスは、OpenGL for Embedded Systems(OpenGL ES または GLES)と Vulkan API を使用して、画面上のグラフィックをレンダリングします。グラフィック アクセラレーションを使用すると、コンピュータのハードウェア(通常は GPU)を使用してレンダリングを高速化できます。パフォーマンスのためにはハードウェア アクセラレーションが推奨されますが、グラフィック ドライバのサポートやシステム イメージの要件の欠如によりコンピュータに互換性がない場合は、ソフトウェア モードを使用する必要があります。
AVD Manager で Android Virtual Device(AVD)を作成するときに、エミュレータでハードウェア レンダリングとソフトウェア レンダリングのどちらを使用するかを指定できます。自動モードでは、ハードウェアとソフトウェアのどちらのグラフィック アクセラレーションを使用するかは、コンピュータに基づいてエミュレータが決定します。コマンドラインからエミュレータを起動した場合も、設定をオーバーライドできます。
AVD Manager でグラフィック アクセラレーションを設定する
AVD のグラフィック アクセラレーションを設定するには、次の手順を行います。
- デバイス マネージャーを開きます。
- 新しい AVD を作成するか、既存の AVD を編集します。
- [Configuration] ウィンドウで、[Additional Settings] タブの [Emulated Performance] セクションを見つけます。
- [グラフィック アクセラレーション] オプションの値を選択します。
- [Finish] をクリックします。
コマンドラインからグラフィック アクセラレーションを設定する
コマンドラインから AVD を実行する場合にグラフィック アクセラレーション タイプを指定するには、次の例に示すように、-gpu
オプションを指定します。
emulator -avd avd_name -gpu mode [{-option [value]} ... ]
mode
は、次のオプションのいずれかの値に設定できます。
auto
: AVD、コンピュータの設定、品質の指標に基づいて、ハードウェアまたはソフトウェアのグラフィック アクセラレーションがエミュレータに選択されるようにします。host
: ハードウェア アクセラレーションにコンピュータの GPU を使用します。通常、このオプションはエミュレータで最高のグラフィック品質とパフォーマンスを実現し、macOS で MoltenVK を有効にして、Vulkan レンダリングを高速化できます。ただし、グラフィック エミュレーションで問題が発生した場合は、ソフトウェア レンダリングに切り替える必要があります。swiftshader_indirect
: クイックブートと互換性のあるバリアントの SwiftShader を使用して、ソフトウェア アクセラレーションでグラフィックをレンダリングします。このオプションは、コンピュータでハードウェア アクセラレーションを使用できない場合、host
モードの代替として使用できる優れたオプションです。
次の mode
オプションのサポートは終了しています。
swiftshader
: バージョン 27.0.2 でサポートが終了しました。代わりにswiftshader_indirect
を使用してください。angle
: バージョン 27.0.2 でサポートが終了しました。代わりにswiftshader_indirect
を使用してくださいmesa
: バージョン 25.3 でサポートが終了しました。代わりにswiftshader_indirect
を使用してくださいguest
: API レベル 28 以降では非推奨です。代わりにswiftshader_indirect
を使用してください。angle_indirect
: バージョン 34.2.14 でサポートが終了しました。代わりにswiftshader_indirect
を使用してください。
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 プロセッサ(Intel Core iX、Intel Core Ultra プロセッサなど)
- AMD-V(SVM)を搭載した AMD プロセッサ(AMD Ryzen プロセッサなど)
- Apple シリコン
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 WHPX(10.0.22631) is installed and usable. accel
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 アクセラレーションでは、次の 2 つのハイパーバイザのいずれかを使用できます。
- Windows Hypervisor Platform(WHPX)
- Android Emulator ハイパーバイザ ドライバ(AEHD)
Windows ハイパーバイザー プラットフォームは、Windows 提供の Hyper-V ハイパーバイザーを利用し、安定性を低下させずに最大限の互換性を提供します。可能であれば、WHPX を使用してください。
システムが WHPX をサポートしていない場合、または WHPX の使用に関して他の懸念がある場合は、Android Emulator Hypervisor Driver を使用できます。
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 の機能の有効化または無効化] コントロール パネルが表示され、選択されているはずです。
Enter キーを押すか、[Windows の機能の有効化または無効化] をクリックして、コントロール パネルを起動します。
[Windows Hypervisor Platform] の横にあるチェックボックスをオンにします。
[OK] をクリックします。
インストールが完了したら、コンピュータを再起動します。
Windows で Android Emulator ハイパーバイザ ドライバ(AEHD)を使用する VM アクセラレーションを設定する
Android Emulator ハイパーバイザ ドライバをインストールして使用するには、コンピュータが次の要件を満たしている必要があります。
- 仮想化拡張機能を備えた Intel または AMD プロセッサ。
64 ビット Windows 11 または Windows 10(32 ビット Windows はサポートされません)
Windows 8.1、Windows 8、Windows 7 の場合は、引き続き AEHD 1.7 以前を使用できます。ただし、そのような場合のサポートは提供されません。
Windows Hyper-V ハイパーバイザも使用する機能は、[Windows の機能] ダイアログで無効にする必要があります。
また、一部の Windows コンポーネントでは、[Windows の機能] ダイアログで [Windows ハイパーバイザー プラットフォーム] が選択されていない場合でも、Windows Hyper-V ハイパーバイザーがアクティブになり、使用できます。これには、Hyper-V、コア分離などのセキュリティ機能が含まれます。(Hyper-V 機能は Hyper-V ハイパーバイザと同じではありません)。これらの機能が必要な場合は、代わりに WHPX を使用してください。
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
macOS で VM アクセラレーションを設定する
macOS の場合、Android Emulator は組み込みの Hypervisor.Framework を使用します。これには macOS v10.10(Yosemite)以降が必要です。ただし、macOS 用として Android Studio で上位のバージョンが必要になる場合があります。その場合は、Android Studio のシステム要件を満たすようにしてください。
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
Intel HAXM のアンインストール ガイド
HAXM の開発終了に伴い、エミュレータ 33.xxx 以降では HAXM が非推奨になりました。Intel プロセッサでは、Intel HAXM の代わりに Android Emulator ハイパーバイザ ドライバ(AEHD)が使用されます。
HAXM に依存する他のソフトウェアをインストールし、Intel HAXM を維持して独自に管理する場合を除き、Windows システムから Intel HAXM を完全に削除することをおすすめします。
Intel HAXM をアンインストールする手順は次のとおりです。
Intel HAXM がインストールされているかどうかを確認する
Windows システムに Intel HAXM がインストールされているかどうかを確認するには、Windows コマンド コンソールを開いて次のコマンドを実行します。
sc query intelhaxm
Intel HAXM がインストールされ、実行中の場合は、コマンド出力に次のメッセージが表示されます。
Intel HAXM がインストールされているにもかかわらず無効になっている場合は、コマンド出力に次のメッセージが表示されます。
どちらの場合も、Intel HAXM が実行中か無効かにかかわらず、インストールされます。Intel HAXM のアンインストールを続行するには、次のステップに進む必要があります。
Intel HAXM がインストールされていない場合は、次のメッセージが表示されます。
Android Studio から SDK Manager を使用して Intel HAXM をアンインストールする
Android Studio から SDK Manager を開き、[SDK Tools] タブに移動して、[Intel x86 Emulator Accelerator (HAXMinstall) - deprecation] 行に移動します。次のスクリーンショットのようになります。
次のスクリーンショットに示すように、チェックボックスをオフにします。
[適用] ボタンをクリックすると、次のダイアログがポップアップ表示されます。
Intel HAXM が正常にアンインストールされると、次のように表示されます。アンインストールが完了しました。ここで終了してください。
エラーが発生した場合は、次のステップに進みます。
Windows の「設定」を使用して Intel HAXM をアンインストールします。
Windows の [設定] を開き、[アプリ] > [インストール済みのアプリ] に移動します。
次のスクリーンショットに示すように、「Intel Hardware Accelerated Execution Manager」エントリを見つけて [Uninstall] をクリックします。
Intel HAXM アンインストーラが実行され、結果が報告されます。アンインストールが正常に完了したら、Intel HAXM インストーラ パッケージを削除するに進みます。それ以外の場合は、次のステップに進みます。
コマンドラインを使用してアンインストールする
「sc stop intelhaxm」を実行して Intel HAXM サービスを停止します。次の出力が表示されます。
「sc delete intelhaxm」を実行して、Intel HAXM サービスを削除します。次の出力が表示されます。
Intel HAXM インストーラ パッケージを削除するに移動します。
Intel HAXM インストーラ パッケージを削除します。
この手順は、Windows の「設定」またはコマンドラインを使用して Intel HAXM をアンインストールする場合にのみ必要です。この手順を行わないと、Android Studio の SDK Manager で引き続き Intel HAXM が「インストール済み」として表示される可能性があります。
インストーラ パッケージは <Android SDK フォルダ>\extras\intel にあります。
デフォルトでは、Android SDK は「C:\Users\<Windows ユーザー ID
>\AppData\Local\Android\Sdk」にインストールされます。次のスクリーンショットの例をご覧ください。