Android

AndroidのIntel Atom(x86)エミュレータを使う (VT-x有効化でエラー)

More than 3 years have passed since last update.

 結構躓いたのでメモします。

 前々からSDK Managerに項目があったことは知っていたのですが、一度使ってみたらかなりもっさりしていたのでそれ以来触っていませんでした。
しかし久々に気になって調べてみたら、アクセラレータを使わないといけないと知り、それならもう一度試してみようと思ったのが罠でした。(よく考えたらデバッグ端末たくさんあるから必要なかったんだよなぁ…)

 まず、Android SDKをインストールしていることが前提です。その説明はしないので、別の資料をお読み下さい。次にインストールですが、Intelの公式資料を併せてお読み下さい。日本語がないので、英語などを読めない人のためにざっくり説明しますと、

[Windows 8.1以外のWindows,Mac]
1. SDK Managerから任意のバージョンの「Intel x86 Atom System Image」と書かれたものと、下方Extras内の「Intel x86 Emulator Accelerator(HAXM)」と書かれたものをチェックします。
2. SDK_PATH\extras\Intel\Hardware_Accelerated_Execution_Manager内にあるIntelHaxm.exe(MacならIntelHAXM.dmg)をクリックし、インストールを行って下さい。
3. インストールが無事成功した場合は完了です。お疲れ様でした。

[Windows 8.1]
上記1において、SDK ManagerからHAXMをダウンロードするのではなく、ここから「Hotfix for Windows 8.1 only (1.0.7)」を選択してダウンロードし、インストールを行って下さい。

[Linux]
試していないので、別の資料をお読み下さい。

 といった感じです。ですが、この資料を読んでいる方は恐らくインストール時に「Intel Visualization Technology (VT-x) is not turned on.」などと怒られたのだと思います。他のエラーの場合は、恐らくデバイスが対応していなかったりなので諦めるか他の記事を読んでいただけるとありがたいです。
調べたところ、このエラーが発生するのには、次の2パターンがあるようでした。

  1. BIOS(UEFI)設定でVT-xが有効になっていない。(Intel公式資料に書かれているパターン)
  2. VT-xを使うソフト(?)がある。

 1番はBIOS設定を変更するだけで大丈夫です。BIOSの起動方法がわからない人は、自分の持っているPCのBIOS起動方法を調べて下さい。BIOSのCPU関連の設定箇所に「Visualization Technology」などの文字があると思うので、それをEnableにしてみてください。極稀に、Disableで有効になるマザーボードがあるらしいので、動かない場合はそちらも試してみてください。
 問題は2番です。もしかするとここで挙げている以外のソフトでもこの症状が起こるかもしれないということをご理解下さい。
 まず、 コントロールパネル→プログラムと機能→Windows の機能の有効化または無効化 の順にクリックし、Hyper-Vにチェックが入っていないか確認して下さい。もしもチェックが入っていた場合は、そのチェックを外して再起動をすれば、VT-xが有効になると思います。
 もしもチェックが入っていなかった場合、Avastを使っていないでしょうか? Avastの設定→トラブルシューティング→ハードウエアによる仮想化支援機能を利用する のチェックを外し、再起動すればVT-xが有効になると思います。

 いかがでしたでしょうか。Androidのarmeabiのエミュレータは評判が悪いので、できるだけ多くの方がまだマシなx86エミュレータをお使いになればいいなと思います。
(本来x86エミュレータはあくまでNDKを利用した場合にx86での動作を確かめるものだとは思いますが…)

【ソース】
Speeding Up the Android* Emulator on Intel® Architecture | Intel® Developer Zone
windows - VT Not Supported when Installing HAXM - Stack Overflow