Android Emulator のハードウェア アクセラレーションを設定する

エミュレータは、純粋なソフトウェアとして使用するより、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 のグラフィック アクセラレーションを設定するには、次の手順を行います。

  1. AVD Manager を開きます。
  2. 新しい AVD を作成するか、既存の AVD を編集します
  3. [Verify Configuration] ウィンドウで、[Emulated Performance] セクションを見つけます。
  4. [Graphics] オプションの値を選択します。
  5. [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 Core iX プロセッサ、Intel Core Ultra プロセッサなど、Intel Virtualization Technology(VT-x、vmx)を搭載した Intel プロセッサ
  • AMD Ryzen プロセッサなど、AMD-V(SVM)を搭載した AMD プロセッサ
  • 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
AEHD (version 2.2) is installed and usable.
accel
Windows では、ハイパーバイザの選択肢が複数あります。そのため、表示内容はこの例と異なる場合があります。たとえば、メッセージに GVM(AEHD の以前の名前)、WHPX のいずれかのキーワードが含まれている場合があります。

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 でハイパーバイザを選択する

このセクションでは、使用するハイパーバイザを決定するための条件について説明します。 以降のセクションでは、各ハイパーバイザを使用して VM アクセラレーションを設定する手順について説明します。

条件 ハイパーバイザ
Hyper-V は Android Emulator と同時に実行する必要がある WHPX を使用します。
Hyper-V を Android Emulator と同時に実行する必要がない 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 をインストールするには、次の手順を行います。

  1. Windows デスクトップで、Windows アイコンを右クリックし、[アプリと機能] を選択します。
  2. [関連設定] で、[プログラムと機能] をクリックします。
  3. [Windows の機能の有効化または無効化] をクリックします。
  4. [Windows Hypervisor Platform] を選択します。

  5. [OK] をクリックします。

  6. インストールが完了したら、コンピュータを再起動します。

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 Defender が提供するコア分離など、一部の Windows コンポーネントでは、[Windows の機能] ダイアログで 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 からインストールするには、次の手順を行います。

  1. [Tools] > [SDK Manager] を選択します。
  2. [SDK Tools] タブをクリックし、[Android Emulator hypervisor driver] を選択します。
  3. [OK] をクリックして、Android Emulator ハイパーバイザ ドライバをダウンロードし、インストールします。
  4. インストール後、次のコマンドライン コマンドを使用してドライバが正しく動作していることを確認します。

    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)以降が必要です。

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 コマンドの使用方法を示します。

  1. 次の方法で、cpu-checker パッケージをインストールします。

    sudo apt-get install cpu-checker
    egrep -c '(vmx|svm)' /proc/cpuinfo
    

    出力が 1 以上の場合、仮想化がサポートされています。出力が 0 の場合は、CPU がハードウェア仮想化をサポートしていません。

  2. 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

Windows での VM アクセラレーションの以前の構成ガイド

HAXM の開発終了に伴い、エミュレータ 33.xxx 以降では HAXM が非推奨になりました。Intel プロセッサでは、Intel HAXM の代わりに Android Emulator ハイパーバイザ ドライバ(AEHD)が使用されます。

Windows でハイパーバイザを選択する(エミュレータ 32.x.x.x 以前)

条件 ハイパーバイザ
Intel プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない Intel HAXM を使用します。
AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がない Android Emulator ハイパーバイザ ドライバを使用します。
Intel または AMD プロセッサが搭載されており、Android Emulator と同時に Hyper-V を実行する必要がある WHPX を使用します。

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 ドライバをインストールするには、次の手順を行います。

  1. SDK Manager を開きます。
  2. [SDK Update Sites] タブをクリックし、[Intel HAXM] を選択します。
  3. [OK] をクリックします。
  4. ダウンロードが完了したら、インストーラを実行します。

    通常、インストーラは次の場所にあります。 sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe

  5. ウィザードを使用してインストールを完了します。

  6. Intel HAXM のインストール後、次のコマンドライン コマンドを使用して、仮想化ドライバが正しく動作していることを確認します。

    sc query intelhaxm
    

    ステータス メッセージには次の情報が含まれます。

    SERVICE_NAME: intelhaxm
           ...
           STATE              : 4  RUNNING
           ...
    

詳細については、Windows での Intel HAXM のインストール手順をご覧ください。

Intel HAXM をアンインストールするには、インストーラまたは Windows コントロール パネルを使用します。Intel HAXM をアンインストールする場合は、実行中の x86 エミュレータをすべてシャットダウンします。

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 の問題トラッカーでバグを報告してください。