Windowsで高速AVDを利用するまでの手順をものすごく詳しく解説

## この記事は
Windowsで高速なAVD（Android Virtual Device）を利用するまでの手順を、**ものすごく**詳しく解説します。なお、文中に出てくる画像のうち、Android Studioは3.0のものですが、2.xでも同様（のはず）です。

## システム要件
高速なAVDを動作させるのに必要なシステム要件は次の通りです。

- CPUがIntel製であること
- CPUが仮想化支援機能（VT-x）をサポートしていること
- PCのBIOS/UEFI（以下、単にBIOS）でVT-xの利用が有効になっていること
- WindowsがVT-xを認識していること
- メモリーを十分に搭載していること（16GB以上推奨）

CPUの性能がどの程度あれば十分かは資料がないので断言はできませんが、最低でもCore iシリーズであることが望ましいと思われます。Core 2などそれ以前のシリーズや、現行品でもCeleronなどの廉価なシリーズでは難しいでしょう。また、Core iシリーズであってもモバイル向けの超低電圧版も厳しいかもしれません。

AVDを高速化するには、インテルが配布しているHAXM（Hardware Accelerated Execution Manager）をインストールする必要があります。Android Studioのセットアップ時にもHAXMをインストールするかどうかの選択肢があり、ここでHAXMを正常にインストールができていれば、"System Imageのインストール"までスキップしてください。

### AMD製CPUは？
HAXMは**Intel製CPU専用**のソフトウェアのため、Ryzenなどの**AMD製CPUでは利用できません**。Windows 10（Proエディション以上[^1]）で利用できる**Windows Hypervisor Platform**（WHPX）を用いれば、（HAXMより若干パフォーマンスは劣るが）AMD製CPUでも高速なAVDを利用することができます。

[^1]: WHPXはWindows 10 1903以降、Homeエディションでも利用可能になった？筆者がHomeが動作するPCを所持していないため未確認。「[Ryzen上でwindows hypervisor platform(WHPX)が有効化されてるにも関わらずandroid emulatorが立ち上がらない](https://qiita.com/ken1998/items/fcb6d5a34e56b626d1bb)」を参照。

- （参考）[Windows Hypervisor PlatformによるアクセラレーションでAVDを動かす](https://qiita.com/keicha_hrs/items/455ee2f2cef36e9c6e1c)

以降、本記事ではIntel製CPUが搭載されたPCについてのみ記します。

## VT-xサポートの確認
CPUがVT-xをサポートしているかどうかはCPU型番を知る必要があります。Windows 10ならば、設定→システム→バージョン情報と進むと、「デバイスの仕様」の中にCPU型番が表示されます。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/bc39b054-26ab-5a59-c463-71c37691831e.png)|
|:--|
|図1|

[インテルの製品仕様情報](https://ark.intel.com/ja)から当該型番を調べましょう。「製品仕様の検索」に型番を入力して検索すると簡単です。表示された仕様ページ下方の「高度なテクノロジー」節の中に「インテル® バーチャライゼーション・テクノロジー (VT-x) 」という項目があります。ここが「はい」になっていることを確認します。もし「いいえ」になっていたら、そのCPUでは高速AVDを利用することは不可能なので、諦めるしかありません。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/f7157506-ff11-768b-480d-b048dda40b74.png)|
|:--|
|図2|

CPUがVT-xをサポートしていることを確認できたら、OSがそれを認識しているかを調べます。これには[VirtualChecker](https://openlibsys.org/index-ja.html)を用いるといいでしょう。インストール不要のソフトウェアで、圧縮ファイルを展開（フォルダー付きで展開されないので注意！空の作業フォルダーを作ってその中で展開すると良いでしょう）した中にあるVirtualChecker.exeを実行すれば直ちに確認できます。**図3**のように、左上がEnabledになっていれば認識されています。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/b2c69b5f-0c56-a94c-767a-c6935676abdf.png)|
|:--|
|図3|

CPUはVT-xをサポートしているのにVirtualCheckerではEnabledにならないとしたら、PCのBIOSまたはUEFIの設定で無効化されている可能性があります。ここはPC機種依存の作業になるため、共通の解説ができません。PCの取扱説明書などを参考にしてBIOS/UEFI設定画面を表示し（大抵は電源投入してすぐにF1などの特定のボタンを押す）、その中からVirtualizationなどのキーワードがあるそれらしい項目を探して有効（Enable）にし、設定保存して再起動してみましょう。どうしても項目が見つからない場合は、メーカーに問い合わせましょう。

## HAXMのインストール
VirtualCheckerでVT-xがEnabledになっているのを確認できたら、HAXMのインストールに進みます。Android Studioのスタート画面右下にあるConfigureをクリックして、リストの一番上にあるSDK Managerを選んで、開かれた画面でSDK Toolsタブを選択して当該項目（**図4**参照）にチェックを入れてOKまたはApplyを押せばインストールが始まります。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/08140fdb-0f07-b589-b739-32e8c1ad52f0.png)|
|:--|
|図4|

なお、インストール過程でメモリーサイズを設定するような画面が出ますが、現行のHAXM（v6.2.0以降）では**この設定は廃止されている**ので、ここでどのような値を設定しても意味はありません。そのまま先に進んでください。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/640ada16-6e03-d944-d4bf-99197c714ec5.png)|
|:--|
|図5|

## System Imageのインストール
次に、エミュレーターで動作させるSystem Imageをダウンロードします。先程と同じSDK ManagerでSDK Platformタブを選択し、右下のShow Package Detailsにチェックを入れてください。すると、各APIレベルのリストが展開できるようになります。APIレベルによって用意されているシステムイメージが違うので、ここではAPI 25を展開した例を示します。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/f344c658-5074-9c2a-f054-4f547f8aee3f.png)|
|:--|
|図6|

末尾にSystem Imageと付いているものがいくつもありますが、HAXMで高速化できるのは、Intel x86 AtomまたはIntel x86 Atom_64と記されているもののみです。ARMやMIPSのSystem Imageは高速化できません。

用意されているSystem ImageはAPIレベルによって異なりますが、大まかには下表のような違いがあります。

||仮想CPU|Google Play|Google API|root権|ストレージ消費量|
|:--:|:--:|:--:|:--:|:--:|:--:|
|Google Play Intel x86 Atom System Image|32bit|○|○|×|特大|
|Google Play Intel x86 Atom_64 System Image|64bit|○|○|×|特大|
|Google APIs Intel x86 Atom System Image|32bit|×|○|○|中|
|Google APIs Intel x86 Atom_64 System Image|64bit|×|○|○|中|
|Intel x86 Atom System Image|32bit|×|×|○|小|
|Intel x86 Atom_64 System Image|64bit|×|×|○|小|

仮想CPUのアーキテクチャは、Java言語やKotlin言語のみでプログラムを作成する段階においては、意識する必要はほとんどありません。ただし、現在流通している実端末はほぼ64bit化されているため、64bit端末でも問題なく動作するか検証したければ選択する意味もあるでしょう。

Google MapなどGoogle APIを必要とするアプリケーションを開発するには、Googel APIの列に○がついたSystem Imageを使用する必要があります。

Google Play列に○がついたSystem Imageでは、実端末と同じようにGoogleアカウントでログインしたり、一般に流通しているアプリケーションをインストールすることができます（ただし、インストールできるアプリケーションにはかなり制約があります）。その分、実端末の消費量と同様にストレージを消費します。ですから、AVDを保存するストレージの残容量には注意を払う必要があります。

ただし、Google Playが使用できるSystem Imageに限り、root権を獲得することができません。root権を必要とする操作が伴うプログラムをAVDで動作させるには、これらを用いることはできません。

また、Google Play System Imageを稼働できる仮想端末にも制約があります。本記事作成時点では、Nexus 5、Nexus 5X、Pixel、Pixel 2の4機種に限られます。

こうした条件を参考に、目的に応じたSystem Imageをダウンロードしておくといいでしょう。あれもこれもダウンロードし、それぞれのAVDの作成まで行ったら、**100GB単位で**ストレージを浪費してしまいます。ですから、「とりあえず作成しておく」感覚ではなく、必要に応じた選択をするべきです。入門書でもGoogle APIを使った地図アプリケーション程度は掲載されていることが多いので、ストレージ消費量を抑えつつ入門書を修了したいのであれば、Googel APIs System Imageを選択するのがバランスが良いかもしれません。

## AVDの作成
これでようやくAVDが作成できます。GUI操作でAVDの作成や編集を行うためのAVD Managerを開くには、何かしらプロジェクトを作成して編集画面に移行する必要があります（この仕様なんとかなりませんかね？）。プロジェクトが開かれても、ビルド作業中はメニューにAVD Managerの項目が出てこないことがあるので、左下のステータスバーに「Gradle build finished」の表示が出るまで待ちましょう。

落ち着いたら、メニューのTools→Android→AVD Managerと進んでAVD Managerを開きます。まだAVDを一つも作成していなければ、**図7**のような画面になるので、"Create Virtual Device..."ボタンを押して先に進みます。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/926c3ec6-b5d7-4916-f168-5092dc2402e6.png)|
|:--|
|図7|

Select Hardwareの画面では、エミュレートするデバイスの外観を選択します。なお、Google Play System Imageを用いる場合には、Play Storeの列にマークが付いているもの（現状ではNexus 5XとNexus 5のみ）を選択する必要があります。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/d8333c24-da2d-7953-3ac7-f584e1d44bf2.png)|
|:--|
|図8|

System Imageの画面では、先程インストールしたSystem Imageを選択します。インストール済みのSystem Imageは太字表示されています。未インストールのSystem Imageは灰色斜字表示され、その横にDownloadのハイパーリンクがあります。これをクリックすることで、この画面でSystem Imageをダウンロードすることもできます。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/dc4ec208-ffc0-3076-b276-7e93d3855ac4.png)|
|:--|
|図9|

RecommendedタブにはGoogle Play System Imageのみが表示されます。Google APIs System Imageを利用するならば、x86 Imageタブを選択して、そのリストから選んでください。

次のAndroid Virtual Device (AVD)の画面では、AVD名をつけたり詳細設定を行えたりします。名前は好きなものをつければ良いですが、それ以外の設定は通常は変更する必要はないでしょう。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/0afca9cb-f1ba-dc39-c120-bd6b62fd1061.png)|
|:--|
|図10|

これでAVDの作成完了です。右側の緑色の▶ボタンを押すと起動するので、とりあえず実行して高速化されているか実感してみましょう。

|![](https://qiita-image-store.s3.amazonaws.com/0/53988/ae43b3bb-de7c-fc08-1277-c8d926423341.png)|
|:--|
|図11|

以後、AVDを追加したいときは、左下に移動した"Create Virtual Device..."ボタンを押して同様の作業を行いましょう。