Android Emulator に関する既知の問題のトラブルシューティング

このページには、Android Emulator の既知の問題、回避策、トラブルシューティングのヒントが掲載されています。ここに掲載されていない問題が発生した場合、またはここに掲載されている回避策で問題を解決できない場合は、バグを報告してください。

一般的な問題


十分なディスク空き容量を確認する

ディスクの空き容量不足によるクラッシュとハングアップを回避するため、エミュレータは起動時に十分なディスク空き容量があるかチェックします。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 ライブラリをインストールします。

埋め込みエミュレータ ウィンドウが小さすぎる

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.modehost に変更します。

この操作を行うと、エミュレータの安定性が低下することがあります。 詳しくは、バグをご覧ください。

Windows Chrome リモート デスクトップでエミュレータが起動しない

Windows で Chrome リモート デスクトップを使用しているときにエミュレータが起動しない場合は、現時点で推奨される回避策は、-gpu host や -gpu swiftshader などの gpu フラグを使用することです。

ネットワークに関する問題


インターネット接続なし: サーバーの 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 をこの新規作成したディレクトリに設定します。詳しくは、環境変数をご覧ください。

現在サポートされていない macOS バージョン上の HAXM

最新ではなく、現在サポートされていない macOS バージョン(10.9 など)で Android Emulator を使用している場合は、HAXM も古いバージョン(6.1.2)を使用する必要があります。

Intel HAXM ハイパーバイザは Intel iX より前の CPU を完全にはサポートしない

コンピュータに Intel iX より前の CPU と Intel HAXM ハイパーバイザが存在する場合は、エミュレータでパフォーマンスの問題が発生することがあります。これは、エミュレータがハードウェア アクセラレーションを使用してそのような古いマシンのパフォーマンスを改善することができないためです。Intel iX より前の CPU が搭載されている場合は、エミュレータではなく物理デバイスを使用すると、テストのエクスペリエンスが向上することがあります。

ハイパーバイザは x86 Android システムが要求する一部の CPU 機能をエミュレートできない

一般的にハイパーバイザは、x86 Android システムが要求する一部の CPU 機能(ストリーミング SIMD 命令(SSE)など)をエミュレートできません。

Android Emulator 拡張コントロールに Google マップが表示されない

バージョン 34.2.13 より前の Android Emulator では、5 月中旬より、拡張コントロールで Google マップが機能しなくなります。古いエミュレータには、Google Maps JavaScript API との互換性がないバージョンの Chromium が搭載されています。