Androidエミュレーターが起動しない時の対処のうちのいくつか
Vagrant が悪さしているパターン
emulator -avd Nexus_5_Android_7
というコマンドでエミュレーターを起動しようとしたら、
emulator: ERROR: Unfortunately, there's an incompatibility between HAXM hypervisor and VirtualBox 4.3.30+ which doesn't allow multiple hypervisors to co-exist. It is being actively worked on; you can find out more about the issue at http://b.android.com/197915 (Android) and https://www.virtualbox.org/ticket/14294 (VirtualBox)
Internal error: initial hax sync failed
というエラーが出たので、Docker を入れていたので、 こちらの記事 に従って、haxm のバージョンをあげてもダメで、Docker を終了してもダメ。
VirtualBox を起動しても VM は全部停止している。
色々調べたりして、以下のコマンドを実行して見たところ、 VirtualBox 上では起動していないけど、Vagrant 的には起動している マシンがいました。
$ vagrant global-status
id name provider state directory
-------------------------------------------------------------------------
29f8fe1 default virtualbox poweroff /Users/tmnm/dev/vagrant/EdgeWin10
7921d85 default virtualbox running /Users/tmnm/dev/vagrant/win10
f5ca0de default virtualbox running /Users/tmnm/dev/vagrant/win8
d1fe4a6 default virtualbox running /Users/tmnm/dev/vagrant/ie9
1244785 default virtualbox running /Users/tmnm/dev/vagrant/win7
それぞれ、
vagrant halt 7921d85
vagrant halt f5ca0de
vagrant halt d1fe4a6
vagrant halt 1244785
としてあげることで、エミュレーター起動しました。
ちなみにこの状態で Docker for Mac も起動できました。
参考
やっぱり Docker が悪さしているパターン
Android Studio Canary で発生したんですが、 Android 7.1.1 / 8.0 は起動できるのに 6.0 / 5.1 が起動できないというパターンです。
以下のようなログが出ます。
Failed to sync HAX vcpu contextInternal error: Initial hax sync failed
この場合は Docker を終了させると起動しました。
参考
所感
Android はハマりどころが多い...