Windows 8.1上にAndroid SDK開発環境(ADT)を構築する手順


ADTの環境構築記事は結構見かけるんですが、まっさらの(これから主流になってくるであろう)Windows 8.1環境での手順はなかなか見かけなかったので書いてみました。

 * あれ、最近のWindowsって標準でJava入ってるんだっけ?
 * さすがに標準ではJDK[^1]入ってないよな…
 * 2014年にもなって低速エミュレータは使いたくないけどHAXMあたりまでカバーした手順がなくてダルい
 * 自分の手元はMacだし、WindowsはMeまでしか使ってないし…8.1で検証するのダルい

というような方はとりまストックしておいて、誰かに教える時にURLぶっ放してもらえば良いと思います。

# 2014/07/02時点の状況
Google I/O 2014の会期中に公開されたADT-Bundle 20140624を利用すると、従来と比較して手順が大きく変わります。
正直なところまだキャッチアップしきれていないので、本ドキュメントのアップデートは今しばしお待ちください。
ここで「当面は20140321を使っておいて下さい」とできればいいのですが、GoogleのADT-Bundle配布サイトからは既にこのファイルが取り下げられており、公式の方法で入手できない状況にあります。

# 2014/12/09時点の状況
この数ヶ月、Android SDKは更新されどもADT-Bundleが7/2版のまま更新されないなーと思っていたのですが、本日ついに
```
Caution: The ADT plugin for Eclipse is no longer in active development. If you're currently using it, you should migrate to Android Studio as soon as possible. For more details about Android Studio, see the Android Studio guide.
```
との文言がデベロッパサイトの[Android Developer Tools](http://developer.android.com/tools/help/adt.html)ページへ追加されました。
要は「もうほとんどメンテしないからさっさとAndroid Studioへ移行してね」ということです。
Android Studio 1.0のリリースと共に完全にADTは過去のもの扱いとなりました。
ということで、今のところこのページの内容も完全に過去のものとしたほうが良さそうです。
取り急ぎ。

# 想定環境

 * CPU: IntelのCPU(VT-x対応のもの)
 * メモリ: 4GB以上搭載
 * HDD/SSD: 16GB以上の空き容量
 * OS: Windows 8.1 64bit / 8.1 Pro 64bit


# ADT Bundleの入手と配置

 1. http://developer.android.com/sdk/index.html の画面右側に表示される「Download the SDK ADT Bundle for Windows」のリンクをクリック
 2. 次の画面で規約への同意と動作環境を選ぶ
  1. 規約を読み、問題なければ同意のチェックボックスをつける
  2. 動作環境は今回の想定環境では64bitを選ぶ
  3. 「Download the SDK ADT Bundle for Windows」をクリックしてダウンロードする
 3. zipを展開すると adt-bundle-windows-x86_64-20140321 (末尾の日付はもっと進んでいるかも)が出来るので、これをProgram Files以下にディレクトリごと移動する
 4. 展開されたeclipse\eclipse.exeのショートカットをデスクトップなどに作っておく

# JDKの入手とインストール
 1. http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html からJDK7u60(もしも最後のuの値が更新されていたらそちら)を選択する
 2. 規約を読み、問題なければ同意して jdk-7u60-windows-x64.exe をダウンロードする
 3. インストーラを実行、標準設定のままでインストール処理をおこなう

# Eclipse(ADT)の動作確認とSDKコンポーネントのインストール
 1. デスクトップに作ったショートカットからeclipseを実行する
 2. ワークスペース(プロジェクトファイルを置く場所)を聞かれるので、特にこだわりが無ければデフォルトのままで「OK」
 3. Googleに利用統計情報を送るか聞かれるのでどちらかを選択(ユーザの自由)して「Finish」
 4. 必要なコンポーネントをインストールするためにSDKマネージャを開く。Window→Android SDK Managerを選択する
 5. Android 4.4.2(API 19)の左側をチェックして全選択する[^2]
 6. Intel x86 Emulator Accelerator (HAXM installer)をチェックする
 7. 複数のライセンス種類について同意するか否かを聞くダイアログが出るので、同意できるならAccept Licenseのラジオボタンを有効にする
 8. Installを押すと、ライセンスに同意したものだけがインストールされる

# 高速動作するエミュレータの導入
Intel CPU機を利用している前提です。AMD CPU機を利用している場合は、諦めて実機を用意などしてください。GenyMotionなどを利用するとAMD CPU機でも高速に動作するエミュレータを利用できるかもしれませんが、本手順では扱いません。これらを(特に企業で)利用する場合はライセンス条項に注意してください。

## VT-xを有効化する
PCの出荷時設定によっては、高速なエミュレータの動作に必要なVT-x機能が有効になっていない場合があります。
BIOSメニューからVT-xを有効にしてください。
PCのメーカーや利用しているマザーボードなどによって設定方法が結構違うので、「(使っているPCの型番) VT-x 有効化」などでGoogle検索して方法を調べて下さい。
大体、PCの起動直後にF8かF10キーを連打することになると思います。

## Hyper-Vを無効化する(Proのみ)
VT-xが有効な環境でも、後述のIntel HAXMドライバインストール時にエラーとなる場合がありますので、Hyper-Vを無効化しましょう。
 1. 設定から「コントロールパネル」を開く
 2. 「プログラム」を開く
 3. 「Windowsの機能の有効化または無効化」を選択する
 4. 「Hyper-V」のチェックが入っている場合は外す。入っていなければそのまま

## IntelのHAXMドライバをインストールする
 1. C:\Program Files\adt-bundle-windows-x86_64-20140321\sdk\extras\intel\Hardware_Accelerated_Execution_Manager 以下にあるintelhaxmを実行する
 2. 規約を読み、問題なければ同意して進める
 3. インストール中にVT-xが無効である旨のエラーが出る場合は、先に挙げたBIOS設定とHyper-V設定の2点を確認する

# エミュレータ用のマシンイメージを作成する
 1. Window→Android Virtual Device Managerを選択する
 2. New...ボタンを押す
 3. 各項目を埋める
  * AVD Name: android4.4.2_haxm
  * Device: Nexus 4
  * Target: Android 4.4.2 - API Level 19
  * CPU/ABI: Intel Atom (x86)
  * Keyboard: Hardware keyboard presentにチェックを入れる(デフォルトのはずなので、入れたまま)
  * Skin: Display a skin with hardware controlsにチェックを入れる(デフォルトのはずなので、入れたまま)
  * Front camera: None
  * Back camera: None
  * Memory Options: RAM: 512, VM Heap: 64
  * Internal Storage: 200 (MiB)
  * SD Card: Size: 500 (MiB)
  * Emulation Options: Snapshotのチェックを外し、Use Host GPUのチェックを入れる

ここまで設定すると、以下のスクリーンショットのようになるはずです。
![AVD_settings_sample.png](https://qiita-image-store.s3.amazonaws.com/0/8642/aab102ed-67e9-06ae-aa82-8cd9b25fa203.png "AVD_settings_sample.png")

## エミュレータを実行する
![AVD_list_sample.png](https://qiita-image-store.s3.amazonaws.com/0/8642/bcf951e5-ac34-2be3-4708-c79af07a6fb0.png "AVD_list_sample.png")
さきの手順で作成したエミュレータイメージ(以下、AVD)を選択し、右側のStart...を押します。

Launch Optionsという画面が表示されます。
![AVD_launch_sample.png](https://qiita-image-store.s3.amazonaws.com/0/8642/77a3c956-81d3-fff6-f585-89276b0bb68f.png "AVD_launch_sample.png")

まずは「Launch」を押してエミュレータを実行してみましょう。

![AVD_boot_sample.png](https://qiita-image-store.s3.amazonaws.com/0/8642/81d58d76-2061-267d-bc67-e42b1a76bbfc.png "AVD_boot_sample.png")
このような起動画面が表示されてしばらく(利用するPCのスペック等により異なります)待つと

![AVD_boot_completed_sample.png](https://qiita-image-store.s3.amazonaws.com/0/8642/46994835-1372-5ae8-6694-eb58dab93277.png "AVD_boot_completed_sample.png")
このような画面が表示されて起動が完了するはずです。

もしも表示されたエミュレータの画面が、PCの画面解像度と比較して大きすぎるようでしたら、ひとつ前の"Launch Options"画面にて「Scale display to real size」にチェックを入れた上で「Screen Size (in)」部分に適当な値を入力してください。
モニターのDPI値が分かっている前提で画面サイズをインチ数で指定するのですが、よく分からなければまずは適当な値を入れてみればよいでしょう。

# 空のアプリケーションを作成、アプリケーションの実行を試す
実際にサンプルコードをエミュレータ上に展開してみましょう。

## 空のアプリケーションを作成する
ADTにてFile→New→Android Application Projectを選択します。

![new_android_project.png](https://qiita-image-store.s3.amazonaws.com/0/8642/414bf7bf-ff56-d4d9-03ef-624b3ecc6e91.png "new_android_project.png")
このような新規アプリケーションダイアログが表示されるので、「Application Name:」の欄に Hello_world と記入します。
すると、Project NameやPackage Nameが自動設定されます。実際のアプリケーション開発時にはこれらを適切に設定する必要がありますが、今回は動作のみを確認するためにこのままにしておきます。

![hello_world_project_settings.png](https://qiita-image-store.s3.amazonaws.com/0/8642/7850cdd3-410f-2e3e-fbae-3621c6de0a44.png "hello_world_project_settings.png")
このようになります。

画面下部の「Next >」を押します。

"New Android Application / Configure Project"という設定画面へ移動しますが、今回は変更しないので画面下部の「Next >」を押します。

"Configure Launcher Icon"というアプリ起動用のアイコン設定画面へ移動しますが、これも今回は変更しないので画面下部の「Next >」を押します。

"Create Activity"というアプリのメインActivity生成設定画面へ移動しますが、これも今回は変更しないので「Blank Activity」が選択された状態のまま画面下部の「Next >」を押します。

"Blank Activity"という、ひとつ前の画面で設定したアプリのメインActivityの詳細設定画面へ移動しますが、これも今回は変更しないのでそのまま画面下部の「Finish >」を押します。

![hello_world_project.png](https://qiita-image-store.s3.amazonaws.com/0/8642/f04a4f9c-d73f-c542-9ddd-59636a30b9c3.png "hello_world_project.png")
プロジェクトのファイルが生成され、このような画面になればokです。

## 空のアプリケーションの動作確認をする

画面左側、Package Explorerと表示されている部分にあるHello_worldプロジェクトを右クリックします。

![hello_world_run_as.png](https://qiita-image-store.s3.amazonaws.com/0/8642/0452675b-a3c6-af45-0b30-ae3292bebb98.png "hello_world_run_as.png")
表示されたメニューの中でRun As→1 Android Applicationと選択します。

アプリケーションがビルドされ、エミュレータが起動している場合はそのままエミュレータへと転送されます。

![hello_world_emulator.png](https://qiita-image-store.s3.amazonaws.com/0/8642/732d48fb-0563-1a2f-3abb-95dc1f89db36.png "hello_world_emulator.png")

このようになれば成功です。

エミュレータが起動されていない場合、標準状態では自動的にエミュレータが起動され、アプリケーションが転送&実行されます。

このとき、以下のような画面で止まってしまう場合があります。

![hello_world_emulator_autoboot.png](https://qiita-image-store.s3.amazonaws.com/0/8642/911e54dc-5b24-2867-71e7-3913b5214018.png "hello_world_emulator_autoboot.png")
この場合はエミュレータ端末がロックされた状態となっていますので、画面中央に表示された鍵マークをドラッグして画面端まで持っていき離すことでアンロックしてください。

# エミュレータが(OSを巻き込んで)頻繁にクラッシュする場合
Intelから新しいバージョンのHAXMドライバがリリースされていることがありますので、[Intel® Hardware Accelerated Execution Manager](https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager)を開き、さきの手順でインストールしたものよりも新しいものが出ていればインストールしてPCを再起動しましょう。
それでもクラッシュが頻発する場合は、GenyMotionなどの代替エミュレータを利用するか、実機を用意することを検討してください。

# おわりに
「これ最低限盛り込んだほうがいいよね」「なんでADTなの。Android Studioじゃないの」「JDKのバージョン上がったよ」といったフィードバックを頂けると幸いです。

[^1]: Eclipse自体の動作と、Android SDKを使った通常の開発上はJREでも構わない気がしますが、筆者は時折必要になる各種JDKのコマンドラインツール群が無くて二度手間を取るよりは最初からJDK入れておこうの気持ちでいつもJDKを入れてます。
[^2]: 2014年6月時点では、まだBuild Tools 19.1をメインにして初心者向け手順を組むのは厄介そうと判断して19.0.3にしています。