Mono for Android v4 とx86版ICSエミュレータを組み合わせて開発する
止まっているのかと勘違いするほどクソ遅いARM版ICSエミュレータでMono for Androidアプリを開発するのは非常にストレスがある。エミュレータの起動まではスナップショットを使えば回避できるが、ビルド->転送->実行->ブレーク->ステップ等はとてつもなく遅い。
そこでx86版ICSエミュレータで開発ができないか試してみたら以外とあっさりうまくいった。ARM版と比較にならないぐらい速い。
ここでの開発環境はMac OS。おそらくWindowsでも可能だろう。
使った物
- VirtualBox for Mac
- VirtualBox用 ICS x86エミュレータイメージ : ここからAndroid-v4.7zをダウンロードする。このイメージはマウス、ネットワークとSDカードをサポートしている。
- Android SDK : エミュレータイメージ内のICSはv4.0.1なので4.0.3(2012/05時点)のSDKをインストールする。
- MonoDevelop v3
- Mono for Android v4.2.1 Trial版
手順
- MonoDevelop、AndroidSDK、VirtualBoxをインストール。
- ダウンロードしたエミュレータイメージを適当なところに解凍。
- VirtualBoxから解凍したエミュレータイメージを読み込む。
- ホストのターミナルで以下のコマンド実行
$ adb kill-server
$ adb start-server
$ adb devices
adb devicesを実行してemulator-5554等と表示されればadbがx86版エミュレータを認識してくれている。
MonoDevelopでのプロジェクト設定
x86版バイナリを作成しなければならないので以下の部分でx86にチェックを入れる。
またエミュレータ内のICSバージョンがv4.0.1なのでTarget framework等を4.0にする。
ここと
ここ
以上でx86版エミュレータMonoDevelopから使えるようになる。ブレークポイントも可能。SDカードへのファイル転送はAndroidSDK付属のddmsから可能。
ネットワークについて
エミュレータのネットワーク設定はNATにしておけばadbからも自動認識された。