エミュレータは、純粋なソフトウェアとして使用するより、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 プロセッサ(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 ハイパーバイザ ドライバを使用できます。
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 Hypervisor Platform が選択されていない場合でも、Windows Hyper-V ハイパーバイザーを有効にして使用します。これには、Hyper-V、Core Isolation などのセキュリティ機能が含まれます。(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)以降が必要です。ただし、Android Studio では macOS で上位バージョンが必要な場合があります。その場合は、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 (HAXM installer) - Deprecated] 行に移動します。次のスクリーンショットのように表示されます。
次のスクリーンショットに示すように、チェックボックスをオフにします。
[適用] ボタンをクリックすると、次のダイアログが表示されます。
Intel HAXM が正常にアンインストールされると、次のように表示されます。これでアンインストールは完了です。ここで作業を終了できます。
エラーが発生した場合は、次のステップに進みます。
Windows の [設定] を使用して Intel HAXM をアンインストールします。
Windows の [設定] を開き、[アプリ] > [インストール済みアプリ] に移動します。
次のスクリーンショットに示すように、[Intel Hardware Accelerated Execution Manager] エントリを見つけて [アンインストール] をクリックします。
Intel HAXM のアンインストーラが実行され、結果が報告されます。アンインストールが成功したら、Intel HAXM インストーラ パッケージを削除するに進みます。それ以外の場合は、次のステップに進みます。
コマンドラインを使用してアンインストールする
「sc stop intelhaxm」を実行して Intel HAXM サービスを停止します。次の出力が表示されます。
「sc delete intelhaxm」を実行して Intel HAXM サービスを削除します。次の出力が表示されます。
Intel HAXM インストーラ パッケージを削除するに進みます。
Intel HAXM インストーラ パッケージを削除します。
この手順は、Windows の [設定] またはコマンドラインを使用して Intel HAXM をアンインストールする場合にのみ必要です。この手順を行わないと、Android Studio の SDK マネージャーで Intel HAXM が引き続き「インストール済み」と表示されることがあります。
インストーラ パッケージは、<Android SDK フォルダ>\extras\intel にあります。デフォルトでは、Android SDK は「C:\Users\<Windows ユーザー ID>\AppData\Local\Android\Sdk」にインストールされます。次のスクリーンショットの例をご覧ください。