web-dev-qa-db-ja.com

Android Studio、エミュレータを実行すると突然GPU Driverの問題が発生する

私は私が私のエミュレータを走らせたとき、私は主にAndroidスタジオでのAndroid開発に使うラップトップを持っています。

Your GPU driver information:

GPU #1
Make: 8086
Model: Intel(R) HD Graphics Family
Device ID: 0a16
Driver version: 10.18.10.3945
GPU #2
Make: 10de
Model: NVIDIA GeForce 820M
Device ID: 1140
Driver version: 22.21.13.8476 

Some users have experienced emulator stability issues with this driver version. As a result, were selecting a compatibility renderer. Please check with your manufacturer to see if there is an updated driver available. 

Geforceドライバを更新しましたが、使用していない、Intelを更新しようとしましたが失敗しました。これを無効にする方法はありますか?互換性レンダラーを迂回して、私がかつて使っていたように動作しますが、エミュレータは今ひどいです。何故それが突然起こったのでしょうか。

また、Windows 7 64ビット版を使用していても問題ない場合は数日前に更新されています。

54
newRuser

私はWin10を使っていますが、同じ問題があります。最後のエミュレータ更新の後、エミュレータが私のアプリをクラッシュさせ始めました。私の場合は、GPUに問題があっても、エミュレータがハードウェア上で動作しないという問題があります。また、ポップアップ表示される「GPUドライバの問題」ウィンドウでは、問題と思われるGPUの1つでもラベル付けされていません。

私にとってうまくいった解決策は、端末からエミュレータを実行し、それをハードウェアグラフィックスを使用して実行するように強制することです(エミュレータにどちらを決定させるのではなく)。

emulator -avd avd_name -gpu mode

どこで モード です ホスト ハードウェアで動作するように。

例えば:

Android Studio端末を使用して、エミュレータが配置されているフォルダに移動します。 Win10のデフォルトはC:\ Users \です。userName\ AppData\Local\Android\sdk\emulator

利用可能なものをリストして実行するエミュレータを探します。emulator -list-avds

でエミュレータを実行する -gpuホスト オプション:emulator -avd avd_name -gpu Host

このリンク に関するさらに詳しい情報

42
Api

Googleの従業員によるこの問題に関する バグ報告 の中の コメント が明らかになっています。

お使いのシステムにディスクリートGPUがない場合は、エミュレータをIntel GPUドライバ上でより確実に実行するためにこの変更を意図しました。ご自身の責任で、設定ページに移動してからOpenGL ESレンダラーを「ANGLE(D3D11)」、「ANGLE(D3D9)」、または「Desktop native OpenGL」に変更することで、Intel GPUの使用に戻ることができます。

このメッセージは、特定のバージョンのグラフィックドライバを実行しているシステムだけでなく、Intel GPUを使用しているすべてのシステムに対して表示されているようです。

解決策 は、可能であれば、エミュレータを実行するための外部GPUの使用に切り替えることです。

Intel GPUがシステムで使用可能な唯一のGPUである場合は、設定でデフォルトのOpenGL ESレンダラを上書きすることで、OpenGL ESの高速レンダリングを再度有効にすることができます(下記参照)。オプションはOpenGL、ANGLEおよびSwiftShaderです。 SwiftShaderはCPUベースのOpenGL ESエミュレーションなので、この設定では高速化されません。 ANGLEはDirect3dベースのOpenGLエミュレーションです。

コメントによると、これは動作が保証されていません。実際、Android 7エミュレータのハードウェアアクセラレーションを再度有効にすることはできますが、ハードウェアアクセラレーションを有効にすると、Android 8エミュレータの黒い画面しか表示されません。

Ctrl-Shift-Sで設定を開き、エミュレータのバージョンに応じて、Settings -> General -> OpenGL ES rendererまたはSettings -> Advanced -> OpenGL ES rendererに移動します。

新しいエミュレータのバージョン: Settings illustration

古いエミュレータのバージョン: Settings illustration

アップデート#1:バグレポートのもう1つの コメント では、この問題についてさらに詳しく説明しています。

エミュレータを実行しているのがIntel HD 4xxxだけの場合は、互換性レンダラを使用することを目的としています。申し訳ありませんが、特に高APIレベル(25+)のシステムイメージを実行している場合は、サポートの行き届いたIntel GPUドライバに切り替えることができる必要があります。その世代(およびそれ以前)のIntel iGPUには、OpenGL互換性に関して多くの問題があります。

Haswell(4th gen)プロセッサ以上のIntel iGPUドライバは、Android 7.1以降のデバイスにはOpenGLを十分にサポートしていないようです。それで彼らは意図的に新しいAndroidエミュレータをよりよくサポートするソフトウェアエミュレーションを使うことにフォールバックしています。

これは私の経験と一致します。 Intel iGPUの使用は、Android 7ではうまく機能しますが、Android 7.1では薄片で、Android 8ではまったく機能しません。

私の提案は、Intel Haswellおよびそれ以前のiGPUにハードウェアアクセラレーションを使用する場合は、Android 7エミュレータを使用することです。

更新#2:この問題に関する公式の連絡は、エミュレータ26.1の リリースノート の中にコメントの形で行われました。 3:

どのGPUがANGLEまたはSwiftshaderレンダリングを使用するように切り替えられるかは、次のように決定されます。

  • 古いIntel iGPUsはOpenGLとANGLE D3Dドライバの両方でドライバの問題を抱えている。 Intel HD Graphics 3xxx以前のユーザーはSwiftshaderを使用します。
  • 「Pixel Launcherが停止し続ける」というバグがあるため、APIレベル25の画像を使用できないと報告したユーザーもいます。これは、一部のIntel HD 4xxxモデルではドライバの問題と思われます。そのため、それらは自動的にANGLEを使用するように切り替えられます。

GPUエミュレーションで最良の結果を得るには、ディスクリートNVIDIAまたはAMD GPU、あるいは新しいIntel GPU(Iris、HD 5xxx、HD 5xx/6xx)のいずれかを使用することをお勧めします。

28
Benjamin

私は今日この問題に出くわした。 Googleエミュレータの課題追跡システムからの提案に従って、私はベータエミュレータ26.1.3をインストールしました。問題が修正されました。

5
Lee

@Apiと同じことをしましたが、Virtual Device Managerから行いました。デバイス編集ウィンドウの[グラフィック]ドロップダウンリストで、[ハードウェア - GLES 2.0]を選択しました。デフォルトは自動です。それでも間違ったGPUドライバのポップアップウィンドウが表示されますが、エミュレータはもうクラッシュしません。通常の信頼性に戻ります。

2
CVD

他にも示唆されているように、設定 - >外観と動作 - >システム設定 - >アップデートに行きます。 「自動的にアップデートを確認する」を「ベータチャンネル」に変更します。エミュレータを最新のベータ版に更新します。ドライバーの問題は解消されるはずです。私は最新のベータ版へのエミュレータの更新後に解決されたグーグルマップ(app chrash)でfragmentを実行するのに問題がありました。

2
AlfaSpider

Linuxユーザーの場合は、私の場合は〜/ Androidの下にあるAndroidフォルダに移動します。それから/ sdk/emulatorに進みます。 "emulator"はローカルコマンドです。そのため、ローカルの「./emulator」としてコマンドを実行できます。

残りはユーザー "Api"が述べたように行われます。

$ ./emulator -avd -avd_name -gpuモード

$ ./emulator -avd Nexus_5X_API_26 -gpuホスト(#IN MY CASE)

注:私はSDKをダウンロードしませんでした。代わりに/ homeディレクトリの下にコピーして貼り付けました。それが、このコマンドが世界規模で有効ではなかった理由です。あなたがゼロからsdk avdを設定するなら、それはちょうどうまくいくはずです。

1
Thet Htun

AVDがソフトウェアアクセラレーションを使用するようにGPUの使用を無効にすることで、この問題を回避することができました。それはGPUほど速くはないでしょう、しかし少なくともそれはきちんと動くよりよい可能性があります。

私は上記の他のオプションを試してみましたが、残念ながらそれらのどれも動作していませんでした。

このオプションを試したい場合は、AVD Manager(Android Studioの場合:[ツール] - > [Android] - > [AVD Manager])に移動してから、仮想デバイスを編集し、[グラフィック]フィールドでは「ハードウェア - GLES 2.0」。

これはこの問題を完全に解決する方法ではありませんが、解決することができます。

0
R. Du

それのどれも私の窓のラップトップ上で私のために働いていませんでしたhd4000

私がLinux上でエミュレータを実行した後、うまくいったのはUbuntu Linuxです。

そのため、IntelとWindowsの問題はすぐには解決されないようです

0
Ahmed D. Sherif

私はちょうど4日前からまったく同じ問題を抱えています。私は上記の両方の答えを試しましたが、どれもうまくいきません。 PS。エミュレータは動作しますが、ランダムにクラッシュしているようです。私はこのエラーの前に、エミュレータはうまく働きました、そして私は特定の機能をテストすることができました。

編集:正確に問題が何だったのかわからないが、アンドロイドスタジオをnVidia GPUで実行することを強制することによって解決されました。

0
Rayzor536