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 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
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 コンポーネントでは、[Windows の機能] ダイアログで Hyper-V を有効にせずに Hyper-V ハイパーバイザをオンにできます(Windows Defender が提供するコア分離など)。このような場合は、代わりに 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)以降が必要です。ただし、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 コマンドの使用方法を示します。

  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

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 インストーラ) - 非推奨] 行に移動します。次のスクリーンショットのようになります。

次のスクリーンショットに示すように、チェックボックスをオフにします。

[適用] ボタンをクリックすると、次のダイアログがポップアップ表示されます。

Intel HAXM が正常にアンインストールされると、次のように表示されます。アンインストールは完了しました。ここで終了できます。

エラーが発生した場合は、次のステップに進みます。

Windows の「設定」を使用して Intel HAXM をアンインストールします。

Windows の [設定] を開き、[アプリ] > [インストール済みのアプリ] に移動します。

次のスクリーンショットに示すように、「Intel Hardware Accelerated Execution Manager」エントリを見つけて [Uninstall] をクリックします。

Intel HAXM のアンインストーラが実行され、結果が報告されます。アンインストールが正常に完了したら、Intel HAXM インストーラ パッケージを削除するに進みます。それ以外の場合は、次のステップに進みます。

コマンドラインを使用してアンインストールする

  1. 「sc stop intelhaxm」を実行して Intel HAXM サービスを停止します。次の出力が表示されます。

  2. 「sc delete intelhaxm」を実行して、Intel HAXM サービスを削除します。次の出力が表示されます。

  3. 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」にインストールされます。次のスクリーンショットの例をご覧ください。