このページには、Android Emulator の既知の問題、回避策、トラブルシューティングのヒントが掲載されています。ここに掲載されていない問題が発生した場合、またはここに掲載されている回避策で問題を解決できない場合は、バグを報告してください。
一般的な問題
Android Emulator の拡張コントロールに Google マップが表示されない
5 月中旬より、バージョン 34.2.13 より前のバージョンの Android Emulator では、拡張コントロールで Google マップが機能しなくなります。古いエミュレータには、Google Maps JavaScript API と互換性のないバージョンの Chromium が付属しています。
十分なディスク空き容量を確認する
ディスク空き容量の不足によるクラッシュとハングアップを回避するため、エミュレータは起動時に十分なディスク空き容量があるかチェックします。5 GB 以上の空きがないと起動しません。エミュレータが起動しない場合は、十分なディスク空き容量があるかどうかを確認します。
ウィルス対策ソフトウェア
セキュリティ ソフトウェアおよびウィルス対策ソフトウェア パッケージの多くは、すべての読み取りおよび書き込みオペレーションをモニタリングすることで機能します。そのため、それらのソフトウェアを使用すると、Android Emulator などのツールのパフォーマンスが低下することがあります。
多くのウィルス対策パッケージには、信頼できるアプリケーションのリストに特定のアプリケーションを追加できる機能があり、リストにあるアプリケーションはパフォーマンスを低下させることなく動作できます。AVD スナップショットの保存または読み込みを行う際にパフォーマンスが低下している場合は、ウィルス対策ソフトウェアで Android Emulator アプリケーションを信頼できるアプリケーションとして追加することにより改善できます。
パフォーマンスへの影響は、ウィルス対策ソフトウェア パッケージによって異なります。オペレーティング システムに含まれているウィルス対策ソフトウェア以外に追加のウィルス対策ソフトウェアがインストールされている場合、簡単なテストを実行すると、エミュレータの読み込みおよび保存オペレーションのパフォーマンスに大きな影響を与えるウィルス対策ソフトウェアを特定できます。
ウィルス対策ソフトウェアによっては、Android Emulator と互換性がない場合があります。
アバスト ソフトウェアを使用していて、Android Emulator の実行に問題がある場合は、アバストの [トラブルシューティング] 設定で [利用可能な場合は、入れ子式仮想化を使用します] および [ハードウェアによる仮想化支援機能を利用する] を無効にしてください。さらに、アバストでハードウェアによる仮想化を無効にした後、SDK Manager から最新の HAXM をすべて再インストールし、再度適切にセットアップされていることを確認してください。
Windows では、AVD が HAXM でフリーズすることがあります。この問題は、McAfee を完全にアンインストールすることで解決できます。
Windows: RAM の空き容量とコミット チャージ
エミュレータは、起動時に Android ゲスト オペレーティング システムの RAM を初期化する必要があります。Windows では、実際のオペレーション中にメモリがオンデマンドでページインされる場合でも、エミュレータは起動時にフルサイズのゲストメモリを準備するように Windows に要求します。Windows は潜在的なワーキング セット全体を保持するのに十分な物理 RAM とページファイルの確保に対して消極的であるため、エミュレータは起動時にゲストメモリ全量を要求します。この要求により、メモリを破棄するかさもなければ解放する機会がないまま、すべてのゲストメモリが急速にアクセスされるという最悪のケースに備えます。
このようにエミュレータが Windows にフルサイズのゲストメモリを確保するように要求すると、要求が現在のコミット制限(使用可能な物理 RAM とページファイルの合計)を超えてしまうことがあります。この場合、Windows は最悪のケースのワーキング セットが物理 RAM またはページファイルのいずれかに収まることを保証できないため、エミュレータの起動が失敗します。
一般的なケースでは、ページファイルと物理 RAM に割り当てられたハードドライブ容量は、エミュレータのほとんどのユースケースに余裕を持って対応できます。コミット制限を超えたためにエミュレータの起動が失敗した場合は、Windows タスク マネージャーの [パフォーマンス] タブで現在のコミット チャージを確認することをおすすめしますタスク マネージャーを開くには、Ctrl+Shift+Esc を押します。
コミット制限を超える可能性はさまざまな方法で減少させることができます。
- エミュレータを起動する前に、未使用のアプリケーションとファイルを閉じて物理 RAM を解放します。
- サードパーティのメモリ管理およびメモリ圧縮ユーティリティを無効にします。こうしたユーティリティは、過剰なコミット チャージを非効率的に発生させ、システムをコミット制限に近づけるおそれがあります。
Windows ページファイルには、システム管理サイズを使用します。これにより、エミュレータやその他のアプリケーションからの需要の増加に応じて、より柔軟かつ動的にページファイルのサイズを(結果的にコミット制限も)増やすことができます。
コミット チャージの詳細と、柔軟な設定が適切に機能する理由については、Microsoft のこちらの記事をご覧ください。
ツール ウィンドウでマルチタッチが機能しない
2 本の指でパンするなどのマルチタッチ ジェスチャーは、エミュレータをツール ウィンドウで実行しているときは機能しません。マルチタッチを有効にするには、別のウィンドウでエミュレータを起動します。
エミュレータが Bluetooth オーディオ出力を劣化させる
Bluetooth ヘッドセットを使用している場合、エミュレータを実行すると Bluetooth ヘッドフォンのオーディオ出力が劣化することがあります(問題 183139207)。これは、エミュレータを起動するとヘッドセットのマイクがオンになり、それによってヘッドセットがデュプレックス モードに切り替えられて音質が低下するためです。
この問題を回避するには、Android Virtual Device(AVD)の config.ini
ファイルに hw.audioInput=no
を追加して、エミュレータのマイクを無効にします。AVD の config.ini
ファイルを見つけるには、デバイス マネージャーで AVD に移動し、オーバーフロー メニューをクリックして [Show on Disk] を選択します。
ChromeOS で Android Virtual Device を起動できない
ChromeOS では、libnss3
依存関係が欠けているために、Android Virtual Device(AVD)を起動できないことがあります。AVD を正常に起動するには、sudo apt install libnss3
を実行して手動で libnss3
ライブラリをインストールします。
Wear OS での手首の傾斜センサーの警告
Wear OS では、エミュレータが手首傾斜センサーに関する次のメッセージを繰り返しログに記録することがあります。
the host has not provided value yet for sensorHandle=16
デベロッパーはこれらの警告を無視してかまいません。
埋め込みエミュレータ ウィンドウが小さすぎる
1024x768 などの解像度の低いマシンでは、Android Studio のツール ウィンドウでエミュレータを実行すると、画面が読みづらくなることがあります。エミュレータ画面を拡大するには、[Device Manager] ツール ウィンドウを開いている場合はそれを閉じます。また、エミュレータ ウィンドウを Android Studio の外部に表示することもできます。その場合は、エミュレータ ウィンドウで [Settings] > [View Mode] をクリックし、[Dock Pinned] の代わりに [Window] を選択します。
グラフィックに関する問題
アップデート後に Android Emulator の動作が遅い
さまざまな外部要因により、アップデート後に Android Emulator の動作が遅くなる場合があります。トラブルシューティングを開始するにあたっては、次の手順をおすすめします。
- Intel GPU(特に Intel HD 4000)が搭載されている場合は、最新の Intel グラフィック ドライバをダウンロードしてインストールしていることを確認してください。
- マシンに Intel GPU とディスクリート GPU の両方が搭載されている場合は、デバイス マネージャーで Intel GPU を無効にして、ディスクリート GPU を使用してください。
-gpu swiftshader
モードを使用してエミュレータを実行します。コマンドラインでのグラフィック アクセラレーション オプションの設定については、ハードウェア アクセラレーションの設定をご覧ください。- IPv6 接続がない場合は、ルーターが IPv6 アドレスを使用していないことを確認してください。
上記の解決策を試しても Android Emulator の動作が遅い問題が引き続き発生する場合は、調査に必要な Android Emulator の詳細情報を記載してバグを報告してください。
エラー: vulkan-1.dll cannot be found
vulkan-1.dll cannot be found
というエラーでエミュレータを起動できない場合は、おそらくエミュレータの更新が必要です。Android Studio でエミュレータを更新するには、[Tools] > [SDK Manager] に移動して、Android プラットフォームの最新の安定版をインストールします。
または、Vulkan グラフィック ライブラリを使用するアプリが不要であれば、フラグ -feature -Vulkan
を指定してコマンドラインからエミュレータを起動することにより、Vulkan をオフにできます。
スナップショットを作成できない
Vulkan グラフィック ライブラリを含むエミュレータのスナップショットの作成はサポートされていません。Vulkan なしでエミュレータを実行するには、フラグ -feature -Vulkan
を指定してコマンドラインからエミュレータを起動します。または、開発ワークフローの一環としてスナップショットを使用するのであれば、Vulkan を含むアプリ(API 30 以降で動作する Chrome など)をアンインストールして使用を回避することもできます。
ウェブページを正しく開くことができない
API レベル 30 以降では、Chrome はレンダリング バックエンドとして Vulkan グラフィック ライブラリを使用します。このため、一部のマシンでは互換性の問題が発生する可能性があります。Chrome が正しくレンダリングされない場合は、フラグ -feature -Vulkan
を指定してコマンドラインからエミュレータを起動してみてください。
GPU ドライバの警告 - ソフトウェアにフォールバックする
GPU ドライバのフォールバックに関する警告が表示された場合は、サポートされていない GPU を使用している可能性があります。デフォルトでは自動が使用されますが、自動ではソフトウェア レンダリングが選択される場合があります。ハードウェアを選択する場合は、強制的にハードウェア レンダリングを使用させることができます(ただし、警告メッセージが表示される場合があります)。
Play ストア以外のイメージの場合は、デバイス マネージャー -> その他アイコン -> [編集] で行うことができます。 Play ストアのイメージの場合は、次の 2 つの構成ファイルを手動で編集する必要があります。
~/.android/your_avd_name.avd/config.ini
~/.android/your_avd_name.avd/hardware-qemu.ini
hw.gpu.mode
を host
に変更します。
この操作を行うと、エミュレータの安定性が低下する可能性があります。 詳しくは、バグをご覧ください。
Windows Chrome リモート デスクトップでエミュレータが起動しない
Windows で Chrome リモート デスクトップを使用しているときにエミュレータが起動しない場合は、現在推奨されている回避策として、-gpu host や -gpu swiftshader などの -gpu フラグを使用します。
macOS でハードウェア レンダリング モードのエミュレータの動作が正しくない
Apple シリコンを搭載した Mac デバイスでは、ハードウェア レンダリング モードが選択されていると、エミュレータは Vulkan API 用の MoltenVK ライブラリを使用します。MoltenVK は一般にパフォーマンスが大幅に向上しますが、このライブラリはすべての Vulkan 機能をサポートしているわけではありません。シェーダーのコンパイル エラー、グラフィックのグリッチ、アプリのクラッシュなどの互換性の問題が発生した場合は、AVD 設定でレンダリング モードをソフトウェアに変更するか、-gpu swiftshader
コマンドライン引数を使用します。
または、-feature -Vulkan
引数を使用して Vulkan サポートを無効にして、GLES アプリでハードウェア アクセラレーションを引き続き使用することもできます。
ネットワークに関する問題
インターネット接続なし: サーバーの DNS アドレスが見つからない
エミュレータがインターネットに接続できない場合は、オプション -dns-server “2001:4860:4860::8844,2001:4860:4860::8888,8.8.8.8,8.8.4.4”
を使用してコマンドラインからエミュレータを起動してみてください。このコマンドは、Google Public DNS の IP アドレスのカンマ区切りリストを供給します。Google Public DNS について詳しくは、デバイスで使用できる Google Public DNS をご覧ください。
インターネット接続なし: DNS の解決に関する問題
/etc/resolv.conf
ファイル内の DNS アドレスが適切に機能しない場合があります。この問題を回避するには、オプション -dns-server 8.8.8.8
または -dns.server 2001:4860:4860::8888
を使用してコマンドラインからエミュレータを起動し、IPv6 専用ネットワーク経由で接続します。
古い問題(非推奨のエミュレータまたは古いシステムに関する問題)
AVD を起動できない
新しいエミュレータのクラッシュ レポートが存在する場合、AVD が起動しないことがあります(問題 #281725854)。この問題は、Canary バージョン 33.x から 32.1.13 にアップデートした後に、33.x バージョンを最後に実行したときにクラッシュし、その後 AVD を再起動しておらず %TEMP%
または /tmp
ディレクトリが引き続きオンになっている場合のみ発生します。この問題が発生した場合は、%TEMP%
ディレクトリ(Linux または macOS の場合は /tmp
)を消去してみてください。
Windows: AVD 名に Unicode が含まれているとエミュレータを起動できない
Windows では、デバイス マネージャーが Android Virtual Device(AVD)を作成するとき、デフォルトで C:\Users\<name>\.android\avd
に AVD を作成します。しかし、AVD 名(<name>
)に Unicode が含まれていると、エミュレータはこのデフォルトの場所から適切に AVD を起動できません。
この問題は Emulator 31.3.6 以降では修正されています。この問題を解決するには、[Tools] > [SDK Manager] を選択してエミュレータを更新します。
または、AVD を作成する前に環境変数 ANDROID_SDK_HOME
をカスタム ディレクトリに設定すると、この問題を回避できます。たとえば、ディレクトリ C:\Android\home
を作成してから、ANDROID_SDK_HOME
をこの新規作成したディレクトリに設定します。詳しくは、環境変数をご覧ください。
ハイパーバイザは x86 Android システムが要求する一部の CPU 機能をエミュレートできない
一般的にハイパーバイザは、x86 Android システムが要求する一部の CPU 機能(ストリーミング SIMD 命令(SSE)など)をエミュレートできません。