タイトルの通り、 Android のエミュレータを起動して、メインのディスプレイ以外に移動させようとすると、隣の画面に映ったとたんにエミュレータがフリーズします。
こちらの記事で3画面化の話を書きましたが、それ以前から問題は起きていたので、グラボ関係とは別問題だと思います。
まあ、今までは一度フリーズしても、次にエミュレータを起動するときに Cold boot をさせれば、メインディスプレイに表示されてそのまま動いていたので、若干不便でしたが使ってきてました。
ところが、先日エミュレータを起動したままディスプレイの電源を切ったか何かのタイミングで、エミュレータがメイン以外のディスプレイに表示されました。後日、このエミュレータを起動しようとすると、どうにもメインディスプレイに戻りません。
ということで、これへの対応方法を検討しなくてはならなくなったので、調べてみたことをメモっておきます。
環境は下記のとおりでした。
- Windows 10 21H2
- Android Studio 4.1.3
解決方法
ググったら、割とすぐに解決方法が見つかりました(ずばり、下記記事です)。
android - AVD Crash on second monitor - Stack Overflow
なるほど、 Open GS EL renderer の設定の問題なんですね。
デフォルトでは、
のように、 host で検出したものを使うとなっているのを
ANGLE(D3D11) に変更するとよいとのことです(要エミュレータの再起動)。
試してみると、メインディスプレイ以外でも問題なく表示できるようになりました。
起動しないエミュレータの場合
上記のやり方は、エミュレータが起動している場合にしか使えません。今回のように、メインディスプレイに持ってくることができなくてエミュレータが起動しない場合は、設定そのものが変更できません。
この場合、問題のあるエミュレータのディレクトリ直下にある『 hardware-qemu.ini 』ファイルをテキストエディタで開いて、
hw.gpu.mode = host
となっている個所を
hw.gpu.mode = angle_indirect
に変更してから、エミュレータを起動( Cold boot )したら、無事立ち上がりました。
これが、正しい設定方法かどうかはわかりませんが、お困りの方、何かのご参考にしていただければと思います。