Android EmulatorはHyper-Vが有効なマシンでは動かない、という話は、今となっては昔の話...のはず。
プライバシーとセキュリティが糞雑魚な情弱御用達コミュニティサイトであるQiitaの「Hyper-VでサクサクAndroidエミュレータを使おう」という記事を読んで、なにも難しいことはなさそうだし、VirtualBoxをやめてHyper-Vに移行してもいいかな、と思った。1
ところが、試してみたところ、私の環境では、なかなかうまくゆかずハマってしまった。
いろいろしらべてみたところ、このAndoird Studio公式のHyper-Vでも動作できるうようになったエミュレーターは、もともとはマイクロソフトがVisual Studio 2017で先行してリリースされていたエミュレーターのオープンソースとしての貢献をもとに作成されたものらしい。
https://android-developers.googleblog.com/2018/07/android-emulator-amd-processor-hyper-v.html
※ この記事によれば、Intelマシンでは引き続きIntel HAXMが使ったほうがベストであるが、従来は使えなかったAMDのCPUや、その他の理由でHyper-Vを使っている場合でも動作できるようになりました、的な感じみたい。
で、先行するマイクロソフトのHyper-Vで動作するAndroid Emulatorの条件は、こちらに詳しく書かれている。
https://blogs.msdn.microsoft.com/visualstudio/2018/05/08/hyper-v-android-emulator-support/
Windows10のバージョンの確認方法
※ いまどきは1803以降にはなっているはず。
SDK → SDK Toolsタブでエミュレータのバージョンを確認。
※ 原因がよく分からなかったので、Android Studio3を何回かインストール・アンインストールを繰り返してしまった。基本的には、ここで バージョン27.3.8以降 となっていれば問題なかったようだ。
ここがハマりポイントだった。
Hyper-Vを有効にしただけでダメだったのである。
Windowsハイパーバイザプラットフォームも有効にしなければならない。
実は元記事でも、ちゃんと書いてありました。
Hyper-V とWindows Hypervisor Platform にチェックをつけてOKを押します。
画像だけ見て、本文をよく読んでおりませんでした。
※ 「Windows Hypervisor PlatformによるアクセラレーションでAVDを動かす」の記事によると、むしろ、「Hyper-V」よりも「Windowsハイパーバイザープラットフォーム」のほうが重要っぽいようです。
※ また上記記事によると、Intel HAXMとWHPX(Hyper-V)とのパフォーマンスを比較したところ、軒並み、Hyper-Vの成績が低いので、公式アナウンスどおり、Intel CPUを使っていてHyper-Vを使いたい理由がないのであれば、従来どおり、Hyper-VではなくHAXMで使ったほうがいいみたいではある。
★★ しかしながら、Windows10でHyper-Vが有効でdocker for windowsがつかえている環境で、しかし、Windows Hypervisor Platformが有効になっていないマシンでも、Android Emulatorが動くマシンも見つけてしまった。これは昨年買ったIntel Core i5-7200UのノートPCで、今回動作しなかったのは5年以上前のIntel Xeon E3-1230 v2のマシンなので、そのあたりCPUの違いとかあるのかもしれない? ★★
Android Emulatorが動かない、でいろいろ検索したら
- どうしても動かないのであれば、x86ではなくARMイメージでエミュレートさせれば(劇遅だけど)動くよ?みたいなアドバイスがあって、そうゆう手もあるのか、と勉強になりました。
以上、おわり
Footnotes
-
Docker for Windowsを試したくなったため ↩