はじめに
Android studioのインストールでHAXMのインストールエラーが発生して、それの解消につまづきました。解消までの道のりをつらつらと書いていますので、誰かの助けになれば幸いです。
結論
先に結論を書いておくと、WHPX(Windows Hypervisor Platform)が有効になっている人は、HAXM installation failed.と表示されても問題ない
です。それでも、「俺はHAXM(Hardware Accelerated Execution Manager)で開発するんだ!」って方はお読みください。
ただ、WHPXにもHAXM にも一長一短あるようです。
環境
ノートPC:HP(Hewlett-Packard)製
OS:Windows10 Home
(これより以下の文章は常体でお送りします。)
エラー内容
以下のサイトからAndroid Stadioをインストールしようとする。
特に設定をいじらずに進めていたが、途中で以下のエラー発生。。。
Intel® HAXM installation failed. To install Intel® HAXM follow the instructions found at: https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows
日本語に変換すると、インテル®HAXMのインストールに失敗しました。 インテル®HAXMをインストールするには、https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windowsにある手順に従ってください。
ということらしい。
URL先に飛んでみると、IntelHAXMのインストール方法が3つ書かれている。
①Installing Standalone Intel HAXM on Windows(WindowsへのスタンドアロンIntelHAXMのインストール)
まずはこの方法を試してみる。ちなみにStandaloneとは機器やソフトウェア、システムなどが、外部に接続あるいは依存せずに単独で機能している状態のこと
らしい。
Android StadioでHAXMをインストールする時のバージョンが7.6.5なので、同じバージョンをダウンロード。zipファイルなので展開してhaxm-7.6.5-setup.exe
を実行。インストールを進めると以下のエラーが。。。なんでや。。。
OKを押してダイアログの中身を見てみると、No
と書かれた場所がある。PCのスペックとかは問題なさそうで、そのような項目は*
がついてるっぽい。No
を潰せば上手くいきそう。
その前に他の2パターンも試してみる。
②Installing HAXM silently on Windows(WindowsにHAXMをサイレントインストールする)
コマンドプロンプトを開いて、先ほどダウンロードして展開したフォルダに移動する。ちなみにdir
でその階層のフォルダやデータが見れ、cd フォルダ名
で移動できる。zipを展開していないと移動できないので注意。
移動したらsilent_install.bat
を入力して実行する。Intel HAXM installation failed!
と表示されてやっぱり失敗。下にlogの場所が表示されるので確認すると、以下のように表示されていた。Installing Standalone Intel HAXM on Windows(WindowsへのスタンドアロンIntelHAXMのインストール)
のエラーと同じようだ。
Version: 7.6.5
Output folder: C:\Program Files\Intel\HAXM
Extract: checktool.exe... 100%
Execute: C:\Program Files\Intel\HAXM\checktool.exe --verbose
CPU vendor * GenuineIntel
Intel64 supported * Yes
VMX supported - No
VMX enabled - No
EPT supported - No
NX supported * Yes
NX enabled * Yes
Hyper-V disabled - No
OS version * Windows 10.0.19043
OS architecture * x86_64
Guest unoccupied * Yes. 0 guest(s)
The system requirements are not satisfied.
③Installing Intel HAXM on Windows via Android Studio(AndroidStudioを介してWindowsにIntelHAXMをインストールする)
そもそもAndroid Stadioでインストールしようと思ってできなかったわけなので、ここは飛ばす。そもそもChoose Components
でPerformance (Intel HAXM)
とか出てこなかったし。
先ほどのlogの詳細を見てみる
No
となっているところが怪しそうなので、1つずつ潰していく。
VMX supportedの解消を目指す
こちらのサイトを見てみると、BIOSの設定をいじってVirtualization Technology
を有効にしないといけないらしい(サイトはASUSのサイトだけど)。
なのでこちらのサイトを参考にVirtualization Technologyを有効化してみる。だけどVirtualization Technologyはenable
になってる。違う場所にあるのかな。。。どこにもない。。。
とりあえずdisenabled
にして保存してみる。
再起動してもう一度インストールを実行してみる
再起動したらC:\Users\ユーザー名\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager
のhaxm-7.6.5-setup.exe
を実行してみる。すると、、、VMX enabled
以外* Yes
になってる!!!なんでや!
でもVMX enabled - No
ってなるのは当たり前だよね。さっきBIOSでVirtualization Technologyをdisenabledにしたし。とりあえずVirtualization Technologyをenableに戻しておくか。
VMX enabledにする方法を探る
VMX enabled
にする方法を探すけど、調べても調べてもBIOSのVirtualization Technologyを有効にする
という情報しか出てこない。。。
さらに調べるとこんな記事が、、、
さらに調べているとこんな記事が。PCはHPのモノ使ってるみたいなので参考にする。読み進めていくとWindows Hypervisor Plattform
にチェックが入っていなかったので、チェックを入れてOK。再起動する。インストールしてみるが結局エラーは変わらない。。。
同じエラーで悩んでる人がいた
さらに調べると、同じエラーで悩んでる人がいた。回答を追っていくと、bcdedit /set hypervisorlaunchtype off
を打てばいいと書いてあるので、コマンドプロンプトを管理者権限で開いて、上のコマンドを入力してみる。この操作を正しく終了しました。
と出たので、インストールしてみるが、エラーは変わらない。。。
WSL2が関係している?
こちらの記事では「There is also talk about WSL2 being involved with Hyper-V, hence HAXM not installing when WSL2 is enabled.」と書かれている。ようは「WSL2がHyper-Vに関係しているという話もあります。したがって、WSL2が有効になっているとHAXMがインストールされません。」ということらしい。そういえば以前Dockerを使ってた時にWSL2の設定をいじったことを思い出した。なので以下のサイトを参考にWSL2の設定を無効にする操作をする。
PCを再起動して再度インストールしてみる。インストールできた!!!\( 'ω')/
ようするに
こちらを見ると、WSL2は最新バージョンの WSL は、Hyper-v アーキテクチャを使用して仮想化を有効にします。
とのこと。だからlogの中に「Hyper-V disabled - No」が書かれていたわけか。したがって、WSL2を無効にする必要があったようだ。
だけど。。。
こちらを読んでいたら、Windows で最適なエクスペリエンスを実現するには、WHPX(Windows Hypervisor Platform) を使用して Android エミュレーターを高速化することをお勧めします。
と書いてある。ようはWHPXが有効にできるなら、HAXMはインストールしなくてもよかったっぽい。今までの苦労が。。。
ただこちらの記事によると、WHPXとHAXMは一長一短らしい。
せっかくHAXMをインストールしたけど、WHPX推奨とのことなので、HAXMをアンインストールしておいた。ちなみにアンインストールは[スタートボタン]→[設定]→[アプリ]→[検索フォームに「intel」と入力]→[intel Hardware Accelerated Execution Managerをアンインストール]
でできる。
そして、[コントロールパネル]→[システム]→[Windowsの機能の有効化または無効化]
よりWindows Hypervisor Platform
と仮想マシンプラットフォーム
を有効にしておいた。
最後に
結局調べて設定したことは無駄だったわけですが、いい勉強になりました。
ただ、完璧に理解できたわけではないので、この記事を読んで
・うまくいかないんだけど。。。
・書いてある文章意味間違ってるよ!
・そのやり方ダメだよ!(怒)
・こっちの方がいいんじゃない?
などなどありましたら、ぜひコメントで指摘いただけるとありがたいです。
最後まで読んでいただいてありがとうございました!!!