2018/01/25

Android Emulator が黒画面でフリーズ

久しぶりに Android の Emulator を起動したら起動はするものの、黒い画面のままフリーズし、そのうち落ちてしまうようになってしまいました。

コマンドラインから起動

エラーメッセージ等を見るには最も手っ取り早い方法なので、以下のようにコマンドラインから起動してみました。

ちなみに、avd のリストを表示するには -list-avds を使います1

% android-sdk/tools/emulator -list-avds
Nexus_6P_API_24
% android-sdk/tools/emulator -avd Nexus_6P_API_24
emulator: ERROR: detected a hanging thread 'QEMU2 main loop'. No response for 15000 ms
zsh: segmentation fault (core dumped)  ./emulator -avd Nexus_6P_API_24

どうも QEMU2 が無限ループに入っているとのこと。

IPv6 の設定を確認

ググッてみると、Stack Overflow に回答が。

参考
[Android Studio emulator: ERROR: detected a hanging thread QEMU2 main loop - Stack Overflow](https://stackoverflow.com/questions/47956847/android-studio-emulator-error-detected-a-hanging-thread-qemu2-main-loop/47963547#47963547)

IPv6 が無効になっていると、この現象が起こるとのこと。

確認してみると、確かに IPv6 が無効になってる。

% cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1

IPv6 を有効にする

Stack Overflow にはコメントアウトすれば良いと書いてありましたが、私の場合は 0 と明示的に指定する必要がありました。

/etc/sysctl.conf を以下のように修正。

1
2
3
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

反映させます。

% sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

この状態でエミュレータを起動したところ、無事に立ち上がりました。

  1. emulator コマンドに help がないので、すぐわからなくなる。 
?

0 件のコメント: