Android x86 を仮想環境 (VMware/VirtualBox/Parallels) にインストールしてリモートデバッグする方法

主目的としてはアレですよ。Windows Phone 開発者は Hyper-V をオンにしなければいけないですよね？
Xamarin.Forms がリリースされたことで、Windows Phone, Android, iOS, Windows ストアを Xamarin を使ってクロスで開発する可能性が出てきました。全員がすべてのデバイスがあるわけではないのでエミュレーター/シミュレーターでまずは開発してみませんか？ということで、色々調べてみました。
是非 Xamarin 触ってみてください笑

結論として、恐らく以下の環境がベストではないかと考えました。

- Mac をホストにする
- VMware/VirtualBox/Parallels などの仮想環境を用意し、[Intel VT-ｘ をオンにする](http://qiita.com/ytabuchi/items/15ff8ae9cc9be9f4bb36)
- 仮想環境に Windows 8.1 Pro 以上をインストール
- 仮想 Windows では Hyper-V をオン ([こちらを参考にしてオンにしてください](http://www.cagylogic.com/archives/2014/06/19222306.php) 2014/8/14追記)  ~~(試してないのですが仮想環境で VT-x をオンにしておけば、仮想 Windows 上で Hyper-V をオンに出来るのではないかと)~~ にして Windows ストア、Windows Phone 開発
- (仮想 Windows で Hyper-V をオンにしていると恐らく Intel HAXM を使えないので、) Mac ホスト上に仮想 Android x86 をゲストでインストールしてリモートデバッグする

多分コレで全環境を 1台のマシンで開発できそうです。まだ私自身が試せてないので、誰か試してくださいｗ 

iOS を無しにする場合は、Windows ネイティブマシンを用意して、それと別マシンに VMware Workstation (有償) を入れて VMware リモート接続で操作するなどが良いでしょう。

このエントリーでは、ちょっと難しそうな仮想 Android x86 について書きたいと思います。なお、使用している仮想環境は VMware Player ですが、Parallels や VirtualBox でも同じ事が出来ると思います。

# Android x86 インストール

ネイティブ Windows で試してしまったので、画面写真は VMware Player になっていますが、Fusion でも Parallels でも仮想マシン上で VT-x をオンにできますので問題ないです。VirtualBox で仮想マシン上で VT-x をオンに出来るかは調べていません。。

[Android-x86](http://www.android-x86.org/) サイトから Android-x86 4.4-RC2 (KitKat-x86) 2014/05/20 リリース の iso をダウンロードします。

[【追記アリ】PC（仮想マシン）にAndroid-x86をインストールしてKindleも読めるぞ！って話 【インストール・設定方法まとめ】 | mogi2fruitsどっとねっと](http://mogi2fruits.net/blog/os-software/linux/android-x86/1983/) とかを参考にしながらインストールします。

ポイントは

- GRUB をインストールすること
- /system ディレクトリを書き込み可能にしておくこと

です。

起動したら、Google アカウントでログインして触ってみましょう。最初は日本語入力が出来ませんので、Play ストアで nihongo と入力して Google 日本語入力をインストールすれば、日本語が使用できるようになります。ストアが使えるのは魅力ですね。[Android Device Manager](https://www.google.com/android/devicemanager) にこの仮想 Android が追加されてしまうと何かと面倒なので Android Google アカウントは専用のアカウントを用意した方が良いかと思います。

画面サイズを変更する方法は 下の方 に纏めておきました。

# adb でネットワーク接続

Android x86 が無事起動し、初期設定を済ませたら、Windows から接続できるかを試しましょう。

Android の IP を調べて、`adb connect <IP>:5555` で接続します。
詳しくは [こちら](http://qiita.com/nnasaki/items/76d940be6733fbdb6ee2#1-3) を参照してください。
Android で `Alt-F1` でコンソールにした後は `Alt-F7` で通常の画面に戻れます。

無事 `adb connect` できたら、後は通常通り ADT からも VS からも Android が見えるはずです。

![スクリーンショット 2014-08-07 13.01.41.png](https://qiita-image-store.s3.amazonaws.com/0/32453/80bd459f-a2e8-40dc-e788-0e757aa4f2ae.png)

![スクリーンショット 2014-08-07 13.40.02.png](https://qiita-image-store.s3.amazonaws.com/0/32453/4c2fa52b-e0a0-d8f3-ca45-ac56776ff999.png)




# 小ネタ - インストール後の画面サイズ設定

インストール後に正常起動を確認したら、一度再起動して、GRUB の選択画面で a を押して追加パラメーター `vga=ask` を追加して起動しましょう。
なお、キーボードは英語キーボードとして認識されるので、日本語キーボードを使用している方は「=」は本来のキーの右の「＾」キーで入力できます。

`Press <ENTER> to see video modes available, ` と表示されているので「Enter」キーを押すと、使える画面サイズのモード一覧が表示されます。私の環境では以下のように表示されました。
 
![スクリーンショット 2014-08-07 09.13.21.png](https://qiita-image-store.s3.amazonaws.com/0/32453/6ead2d73-90c2-9713-8dc6-540809f5832b.png)

例えば 1280x800 の 16bit で起動したい場合は、上記の画面で 369 と入力して Enter を押します。32bit は起動しないことがあるので、16bit が良さそうです。また、1280 以上の横幅にしてもスケールが変わるだけなので 1280 あれば十分だと思います。

好みの画面サイズが見つかったら、
[VirtualBoxのAndroid 4.0 x86を縦置きにする。 : 時々、失業SEの開発日誌](http://blog.kotemaru.org/2013/02/virtualboxandroid-40-x86.html)
などを参考に、`vi /mnt/grub/menu.lst` して GRUB の設定を書き換えます。/system を rw にしていれば、再マウントする必要はありません。

`menu.lst` に記載する vga=xxx の数字は 10進数で書く必要があるので、上記画面で 369 であれば `vga=873` を追記しましょう。
10進数への変換は [ここ](http://tool.muzin.org/16/) とか便利です。

GRUB メニューを追加すればこんな感じでデフォルトの画面サイズも変更出来て快適ですね。

![スクリーンショット 2014-08-07 12.06.13.png](https://qiita-image-store.s3.amazonaws.com/0/32453/9fe61076-e480-b9b5-bd37-18ee4ebea2df.png)

![スクリーンショット 2014-08-06 10.16.43.png](https://qiita-image-store.s3.amazonaws.com/0/32453/52448569-8c44-3a4d-2d02-120f17b612db.png)



# 無事動作確認できました！
ただし、特にPhoneのエミュレーターが凄く重いので、MBAの 8GBメモリだとキツイですｗ 最低16GBメモリでWindowsゲストに8GB〜10GB位、Android x86に1GB〜2GB割り当てるのが良さそうです。写真は Xamarin.Forms の適当なサンプルアプリです。

![スクリーンショット 2014-08-14 14.22.02.png](https://qiita-image-store.s3.amazonaws.com/0/32453/546291ec-8a47-3c26-33d2-005938ad8028.png)