2018/01/25

Android Emulator が黒画面でフリーズ

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



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

ちなみに、`avd` のリストを表示するには `-list-avds` を使います`emulator` コマンドに help がないので、すぐわからなくなる。。 

```console
`gutter: false;
% 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 が無効になってる。 ```console `gutter: false; % cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 ``` ### IPv6 を有効にする Stack Overflow にはコメントアウトすれば良いと書いてありましたが、私の場合は `0` と明示的に指定する必要がありました。 `/etc/sysctl.conf` を以下のように修正。 ```text net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 ``` 反映させます。 ```console `gutter: false; % sudo sysctl -p net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 ``` この状態でエミュレータを起動したところ、無事に立ち上がりました。

0 件のコメント: