Xamarin逆引きTips
Xamarin Android Playerを使うには?
Xamarin製の高性能Android EmulatorであるXamarin Android Playerの使い方を紹介する。
Android SDKに付属している標準のARM Emulatorは非常に遅く使いづらい。そのため、各社からx86 AndroidをベースとしたEmulator環境がリリースされている。今回はXamarinが提供する高性能なEmulatorであるXamarin Android Player(ザマリン・アンドロイド・プレイヤー。以下、XAP)のインストール方法と使用方法を紹介する。
XAPはWindows/Mac OS Xをサポートする。「Oracle VM VirtualBox(オラクル・ブイエム・バーチャルボックス。以下、VirtualBox)」をベースとしたx86の仮想Android環境だ。2015年11月現在はPreview版で、Xamarinのユーザー(評価版ユーザーを含む)は無償で利用できる。以下の特徴がある。
- OepnGLを動作させるため、Google Mapsを使用したアプリやOpenGL 2.0を使用したゲームが動作する
- Visual Studio/Xamarin Studioとのシームレスな連携により、直接アプリのデプロイ先として認識され、デバッグができる
- .apkファイルをドラッグ&ドロップで直接インストールできる
- Google Play ServicesをインストールできるのでPUSH通知のテストができる
OpenGLが動作する半面、仮想インスタンス内での実行やリモートデスクトップ、VPN経由で表示させることはできない点に注意してほしい。
- ※なお、本文書ではWindows 10を使用しているが、「Windows」と断りを入れている箇所以外は全てMacでも同じ操作、画面となる。
必要なシステム
Windows:
- 2GBytesのメモリ
- 2GBytesのHDDの空き容量
- OpenGL 2.0をサポートするグラフィックカード
- Intel VT-x/AMD-VをサポートするCPUで、VT-xがオンになっていること
- 最大のパフォーマンスを出すためには、Hyper-Vがオフになっていることが望ましい
- VirtualBox 4.3.18 以上(Windows 10のみ5.0.2以上が必須。XAPインストーラーには5.0.4が同梱される)
Mac OS X:
- OS X 10.7 以上
- 2GBytesメモリ
- 2GBytesのHDDの空き容量
インストール
使用しているOS向けのインストーラーを、XamarinのWebサイト「Simulate Android apps with the Xamarin Android Player(英語)」からダウンロードしてインストールする。VirtualBoxはXAPのインストーラーに同梱されているので自動でインストールされる。インストールは特に難しいところはないが、Windowsの場合はVirtualBoxのインストール中に仮想ネットワークデバイスを設定する次のワーニング(Warning)と許可するダイアログが表示されるため、「インストール」を選択してほしい。
次の画面が表示されればインストールは完了だ。
イメージのダウンロード
XAPを起動すると、2015年11月現在、12個のデバイスイメージがダウンロードできる(図3)。好みの端末をダウンロードしよう。Preview(プレビュー版)ではあるが、すでにAndroid 6.0 Marshmallow(マシュマロ)のイメージが使用できることが分かる。
右側の矢印アイコン をクリックしてAndroidイメージ(本稿では「Nexus 5 (Lollipop)」)をダウンロードする。
Windows環境では最初にイメージをダウンロードする際に、仮想Androidデバイスと通信するため、ネットワークカードの設定を促すダイアログが表示される(図4)。[OK]ボタンをクリックして指示に従ってほしい。そのまま処理を進めると、[接続の名前変更エラー]ダイアログが表示されるが(図5)、そのまま指示に従い処理を進めることで変更は完了する。
POINT 1: XAP利用時のファイアウォール設定(Windowsの場合)
XAPは仮想Androidとの通信に22468番ポートを使用する。Windows標準の「Windows ファイアウォール」以外を使用している場合は解放してほしい。
ボタンとショートカット
ダウンロードが終わったら、「Nexus 5 (Lollipop)」を起動してみよう(図6)。
壁紙を変更したり、言語を日本語に設定したり(図7)してもよいだろう。
サイドバーアイコン
XAPのサイドバーには、ハードウェアキーとして動作するアイコンがある。Lollipop以上のAndroidイメージでは一部動作しないキーもあるが、以下の表にアイコンの一覧を載せておく。
アイコン | キーボードショートカット(Windows|Mac) | 説明 |
---|---|---|
XAPの設定画面を表示する。 バッテリーコントロールとGPS |
||
Win:[Ctrl]+[↑] Mac:[Option(⌥)]+[↑] |
音量アップ | |
Win:[Ctrl]+[↓] Mac:[Option(⌥)]+[↓] |
音量ダウン | |
Win:[Ctrl]+[←]/[→] Mac:[Option(⌥)]+[←]/[→] |
左回転/右回転 | |
Win:[Ctrl]+[S] Mac:[Option(⌥)]+[S] |
スクリーンショット | |
Win:[Ctrl]+[Backspace] Mac:[Option(⌥)]+[Delete] |
戻るボタン | |
Win:[Ctrl]+[H] Mac:[Option(⌥)]+[H] |
ホームボタン | |
Win:[Ctrl]+[T] Mac:[Option(⌥)]+[T] |
マルチタスクボタン | |
Win:[Ctrl]+[M] Mac:[Option(⌥)]+[M] |
メニューボタン | |
Win:[Ctrl]+[X] Mac:[Option(⌥)]+[X] |
検索ボタン | |
Win&Mac:[Esc] | 電源ボタン |
また、Alt/Optionキーを押しながらドラッグするとピンチとなり、拡大・縮小が可能で、Alt+Shift/Option+Shiftキーを押しながらドラッグすると、2本指スワイプとなり、マップアプリの場合は表示角度を変更できる。
設定ウィンドウ
で表示できる[設定]ウィンドウの機能についてもう少し説明しておこう。
バッテリー
図8の画面はCtrl+B/Option(⌥)+Bキーで呼び出せる。この[Battery(バッテリー)]ウィンドウではバッテリーの状態を変更できる。残り%と充電中(Charging)/放電中(Discharging)の設定が可能だ。
GPS
図9の画面はCtrl+L/Option(⌥)+Lキーで呼び出せる。この[GPS]ウィンドウでは現在位置(具体的には下記の項目)を指定できる。
- Latitude: 緯度
- Longitude: 経度
- Altitude: 高度
- Accuracy: 精度(図9のスクリーンショットでは、5m以内にいることが「計測」できたことになっている)
マップを使用するアプリや、ロケーションサービスを使用するアプリの動作チェックに便利だ。初回起動時は米国の位置になっているので、読者の方々の地域に合わせて修正してほしい。位置情報は、Androidイメージごとに保存されるので起動のたびに変更する必要はない。
Google Playのインストール
マップアプリを実行するには、Google Play Servicesが必要だ。この章ではGoogle Play Servicesのインストール方法を紹介する。
developer.xamarin.com(英語)内のドキュメント「Xamarin Android Player - Google Apps and Google Play Services(英語)」にあるように、「cyanogenmod.orgのWebサイト(英語)」からgappsをダウンロードして、XAPで実行中のデバイスにドラッグ&ドロップでインストールする(後述)。gappsは具体的には、上記リンク先ページのKitKat用の「20140606 on AFH」からダウンロードできる「gapps-kk-20140606-signed.zip」ファイルか、Lollipop用の「20141212 on AFH」からダウンロードできる「gapps-lp-20141212-signed.zip」ファイルを使用する(図10)。「20140606 Torrent」はすでにリンク切れなので、上記の2つのファイルもダウンロード後は保管しておくとよいだろう。
なお、図10にある「OpenGApps」と「CGApps」は、それぞれをダウンロードして.zipファイルを展開すると分かるが、含まれるファイルやフォルダー構造が「gapps-kk-20140606-signed.zip」や「gapps-lp-20141212-signed.zip」と異なっており、XAPのドラッグ&ドロップ・インストーラーには対応していない(=インストール時に「zipがFlashableではない」というエラーが表示される)。
ドラッグ&ドロップによるgappsのインストールは図11の手順で行う。
POINT 2: Marshmallowイメージへgappsをインストールする際の問題点
XAPにはすでにMarshmallowのイメージがあるが、このイメージには「gapps-lp-20141212-signed.zip」をインストールできなかった。Marshmallowからパーミッションの設定が変更されているためかもしれないが、原因は不明だ。「gapps」のアップデートまたはXAPのアップデートに期待しつつ、マップアプリのテストにはLollipopまたはKitKatのイメージを使用してほしい。
インストール後の流れ
ドラッグ&ドロップ・インストーラーで「gapps」をインストールした後はちょっとしたコツが必要になる。ここでは「gapps-lp-20141212-signed.zip」を「Nexus 5 (Lollipop)」にインストールした後の流れを紹介する。
インストールするとAndroidが自動的に再起動し、起動時に最適化が行われる(図12)。
画面をスワイプしてログインすると、[Map]または[Google+]が次のようなエラーを出力しているはずだ。
このエラーは無視して構わない。そのまま[ホームボタン:○]をクリックして、[アプリケーションドロワー](=ホーム画面の下部中央にあるボタン)から[Google+]アプリ項目をドラッグすると[アプリ情報]という項目が画面上部中央に表示されるので、そこにドロップして[アプリ情報]画面を開く。その画面上の[無効にする]ボタンをクリックして、アプリ自体を無効にする(図14)*1。
- *1 Google+のエラーがKitKat端末で繰り返し出る状況なので、筆者の場合はいつもオフにしている。KitKatの場合は、他のアプリを更新した後で、Google+を再度有効にして更新すればエラーは出なくなる。Lollipopの場合はそのまま更新しても構わないが、KitKatで動かすことも考慮して、基本的に全てのデバイスで無効にしてしまうことをお勧めしている。
次に[Play ストア]アプリを起動し、ログイン処理を進める(図15)。XAPで使用するGoogleアカウントは、普段使用しているアカウントとは分けておくことをお勧めする*2。
- *2 アカウントを分けるのは、Googleデバイスマネージャーにこの端末が登録されるのを防ぐためだ。一度登録されると非表示にはできるが、削除できないので注意してほしい。
ログインが完了したら、左上のハンバーガーメニューから[マイアプリ]をクリックし、[インストール済み]タブの[すべて更新]ボタンをクリックする(図16)。
インストールが完了すると、[Google Play開発者サービス]の更新通知が出ているはずなので、これも[更新]する(※通知が出ていない場合は[Google]アプリで「Google Play開発者サービス」を検索するなどして図17のページを開いて更新する)。
必要に応じて、「Googleフォト」や「ESファイルマネージャー」などをインストールしてもよいだろう(※XAPにインストールできるのは、x86に対応したアプリのみ)。更新が完了したら、[マップ]アプリを起動してみよう(図18)。
ピンチイン/アウト、ズーム、傾きなど、通常の「Googleマップ」と同じ機能を持つことを確認してほしい(図19)。
マップが正常に動作することが確認できたら、Visual Studio/Xamarin Studioを起動してマップアプリを作成してみよう。Androidでマップアプリを作成するには、Google Developers Consoleでdebug.keystore
のハッシュ値とアプリ名を登録する必要がある。
詳細は「Tips:Xamarin.Androidで地図を表示するには?(Google Maps使用)」や「Tips:Xamarin.Formsで地図を表示するには?(Xamarin.Forms.Maps使用)」を参照してほしい。
コーディングが完了したら、Visual Studio/Xamarin Studioのビルド対象から「Nexus 5 (Lollipop)」を選択してビルドしよう。XAPが起動していなければ自動起動して、アプリがインストールされデバッグ実行される。
Xamarin.Formsのアプリで地図を表示してみたのが以下の画面だ。
POINT 3: Androidエミュレーターの使い分けについて
Windowsでは、XAP以外にもVisual Studio 2015に同梱の「Visual Studio Emulator for Android」、「Genymotion」などが使用できる。Windows Phoneアプリを同時に開発する場合など、ケースバイケースで使い分けてほしい。ARMやIntel HAXMを使用したAndroid SDK標準で用意されているEmulatorを含めた各Emulatorの比較を「Windows で動作する Android 仮想環境の比較まとめ - Xamarin 日本語情報」に記載しているので、使い分けの参考にしてほしい。Macでは、Genymotionが商用利用は有償となるので、XAP一択となるだろう。
まとめ
XAPは、OpenGLをサポートしたマップアプリの検証もできる高性能なAndroidエミュレーターだ。ぜひ読者の皆さまのAndroid開発に役立ててほしい。
※以下では、本稿の前後を合わせて5回分(第59回~第63回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
59. MvvmCrossでViewModelからViewにイベントを通知するには?(Messengerパターン)
MvvmCrossでのiOS/Androidアプリ開発において、ViewModelからViewにイベントを通知するMessengerパターンの実装方法を紹介する。
60. XamarinのUIやコードの実行結果を簡単に確認できる「Sketches」を使うには?
Xamarin.Formsのレイアウトなどを、ビルドすることなくREPL環境で手軽に確認できるSketchesの使い方を紹介する。
61. 【現在、表示中】≫ Xamarin Android Playerを使うには?
Xamarin製の高性能Android EmulatorであるXamarin Android Playerの使い方を紹介する。
62. Plugins for Xamarinを使いこなすには?(ファイルシステム編)
デバイス固有の機能に簡単にアクセスできるPlugins for Xamarinを複数回にわたって紹介していく。今回は、簡単にファイルの入出力が行える「PCL Storage」プラグインを説明する。
63. Plugins for Xamarinを使いこなすには?(GPS編)
デバイス固有の機能に簡単にアクセスできるPlugins for Xamarinを複数回にわたって紹介していく。今回は、GPSの機能を使える「Geolocator」プラグインを説明する。