【どうして...？】Android Studioインストールで「HAXM installation failed.」が発生する

## はじめに

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をインストールしようとする。

https://developer.android.com/studio?hl=ja

特に設定をいじらずに進めていたが、途中で以下のエラー発生。。。

```
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`を実行。インストールを進めると以下のエラーが。。。なんでや。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102063/8654700a-dfa8-8e91-a055-10f2103b7ec9.png)

OKを押してダイアログの中身を見てみると、`No`と書かれた場所がある。PCのスペックとかは問題なさそうで、そのような項目は`*`がついてるっぽい。`No`を潰せば上手くいきそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102063/bba5c237-6229-ba11-0d21-d6ae8dcd039a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102063/5606b846-c70e-8533-7a23-9fce34934572.png)

その前に他の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の解消を目指す
[こちらのサイト](https://www.asus.com/jp/support/FAQ/1043786/)を見てみると、BIOSの設定をいじって`Virtualization Technology`を有効にしないといけないらしい(サイトはASUSのサイトだけど)。
なので[こちらのサイト](https://jp.ldplayer.net/blog/90.html)を参考に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`になってる！！！なんでや！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102063/224a0dce-bdb0-5c72-e36f-8585eddc4e18.png)
でも`VMX enabled - No`ってなるのは当たり前だよね。さっきBIOSでVirtualization Technologyをdisenabledにしたし。とりあえずVirtualization Technologyをenableに戻しておくか。

### VMX enabledにする方法を探る
`VMX enabled`にする方法を探すけど、調べても調べても`BIOSのVirtualization Technologyを有効にする`という情報しか出てこない。。。

### さらに調べるとこんな記事が、、、
https://rikoubou.hatenablog.com/entry/2020/01/28/183010

さらに調べているとこんな記事が。PCはHPのモノ使ってるみたいなので参考にする。読み進めていくと`Windows Hypervisor Plattform`にチェックが入っていなかったので、チェックを入れてOK。再起動する。インストールしてみるが結局エラーは変わらない。。。


### 同じエラーで悩んでる人がいた
https://github.com/intel/haxm/issues/367#issuecomment-927104086

さらに調べると、同じエラーで悩んでる人がいた。回答を追っていくと、`bcdedit /set hypervisorlaunchtype off`を打てばいいと書いてあるので、コマンドプロンプトを管理者権限で開いて、上のコマンドを入力してみる。`この操作を正しく終了しました。`と出たので、インストールしてみるが、エラーは変わらない。。。

### WSL2が関係している？
https://superuser.com/questions/1592743/how-to-enable-vmx

こちらの記事では「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の設定を無効にする操作をする。

https://qiita.com/hibohiboo/items/2783fb3774d502d038ea

PCを再起動して再度インストールしてみる。インストールできた！！！＼( 'ω')／

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1102063/0a20bf00-23ea-374c-ce8f-b2ceec860e07.png)

## ようするに
https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce

こちらを見ると、WSL2は`最新バージョンの WSL は、Hyper-v アーキテクチャを使用して仮想化を有効にします。`とのこと。だからlogの中に「Hyper-V disabled - No」が書かれていたわけか。したがって、WSL2を無効にする必要があったようだ。

## だけど。。。

https://docs.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/hardware-acceleration?pivots=windows

こちらを読んでいたら、`Windows で最適なエクスペリエンスを実現するには、WHPX(Windows Hypervisor Platform) を使用して Android エミュレーターを高速化することをお勧めします。`と書いてある。ようはWHPXが有効にできるなら、HAXMはインストールしなくてもよかったっぽい。今までの苦労が。。。

ただこちらの記事によると、WHPXとHAXMは一長一短らしい。

https://qiita.com/keicha_hrs/items/455ee2f2cef36e9c6e1c

せっかくHAXMをインストールしたけど、WHPX推奨とのことなので、HAXMをアンインストールしておいた。ちなみにアンインストールは`[スタートボタン]→[設定]→[アプリ]→[検索フォームに「intel」と入力]→[intel Hardware Accelerated Execution Managerをアンインストール]`でできる。
そして、`[コントロールパネル]→[システム]→[Windowsの機能の有効化または無効化]`より`Windows Hypervisor Platform`と`仮想マシンプラットフォーム`を有効にしておいた。

## 最後に
結局調べて設定したことは無駄だったわけですが、いい勉強になりました。
ただ、完璧に理解できたわけではないので、この記事を読んで
・うまくいかないんだけど。。。
・書いてある文章意味間違ってるよ！
・そのやり方ダメだよ！(怒)
・こっちの方がいいんじゃない？
などなどありましたら、ぜひコメントで指摘いただけるとありがたいです。

**最後まで読んでいただいてありがとうございました！！！**