とりあえず、前回の投稿でも触れたとおり、実機を入手したので開発環境だけでも構築して、その気になったらスムーズに開発できるようにしておく。
開発環境としては、Visual Studio2017を選択する。Xamarinが統合されてVisual Studio上でほぼすべてのデバイス向け開発がC#でできるよう(iOS向け開発はMacも必要だが)になった。今後はMR(VR+AR)+Unityの開発が盛んになっていって、Visual Studio+C#の開発環境に馴染んでおいたほうが良いのと、今更Android StudioやEclipseとJavaを使った開発は個人的にはやりたくないという思いがある。
事前設定
Fireタブレットの準備
「設定」「端末オプション」「シリアル番号」を7回タップすると、下に「開発者オプション」が表示される。
「開発者オプション」を選択して、「ADBを有効にする」オプションをONにする。
「設定」「セキュリティ」「不明ソースからのアプリ」をONにして、自作アプリのインストールできるようにする。(要らないかも?)
Visual Studio2017の準備
とりあえずVisual Studio2017をインストールしておく。最低限下図の「.NETによるモバイル開発」を選択しておく。
オプションを減らしたりしてインストールサイズを減らすことも可能なので、必要ならネットで調べる。
Android SDKのインストール
VS2017では、最新のAndroidバージョン(Android7 API25)がデフォルトでインストールされているが、FireタブレットにインストールされているAndroid OS(Fire OS)はAndroid5.1.1、API22とちょっと古い。追加でインストールする必要がある。
VS2017からAndroid SDK Managerを起動する。
Android SDK Tools, Platform-tools, Build-toolsなどは最新がインストールされていて、古いバージョンを入れなくてもいい?(曖昧)
Fireタブレット用にAndroid5.1.1のSDKをインストールする。実機でデバッグするので、仮想端末では試さないのでSystem Imageは選択しない。(サイズが大きいので)
必要ないかもしれないが、Amazonが提供しているアドオンをインストールする。URLを追加する。
https://s3.amazonaws.com/android-sdk-manager/redist/addon.xml
ExtrasからKindle Fire USB Driver, Amazon Maps API v2を追加した。(ドライバーはWindows10なら要らないかもしれないがとりあえず)
接続確認
開発PCとタブレットを接続してAndroidデバイスとして認識するか確認する。
- FireタブレットをPCとUSB接続する。
- タブレット画面に「許可するか?」的な内容が表示されるので、許可(OK)する。
- Visual Studioの[ツール]メニュー以下からADB用のパスが利いているコマンドプロンプトを起動する。
デバイスとして認識しているか確認する。以下のようなデバイスがリストされればとりあえずOK
> C:\Program Files (x86)\Android\android-sdk>adb devices
List of devices attached
G090ME0673040JMH device
デバイスの定義
レイアウト定義を行うためにも、デバイスを定義しておく。デフォルトではNexusなどのGoogle製品ぐらいしか定義されていない。一致するものがあればいいが、Fire HD8に合うものがないので、定義しておいたほうが、実機で実行したときの見た目の乖離が少なく済む。
Android Emulatorマネージャを起動する
Device DefinitionsタブからCreate Deviceを選択する。タブレットのスペックに沿った値を定義する。
Amazon Fireタブレットの仕様
Screen Layout and Resolution
Visual StudioでサンプルAndroidアプリを作成する(Androidプロジェクト)
プロジェクトの作成
まずは、通常のAndroidプロジェクトでサンプルを作成して、実機でデバッグできるところまでの流れを確認しておく。
とりあえず単一ビューアプリのプロジェクトを作成
マニフェストファイルで、ターゲットのAndroidバージョンを指定する。ターゲットが決まっているので、MinimumもTargetもAndroid5.1.1を指定している。
続いて、画面レイアウトの定義を選択する
Deviceに先ほど定義したAndroid Fire HD8を選択する。レイアウトのサイズや比率がアップデートされる。
また、Document Outlineを表示するようにすると、ユーザインタフェースの部品の構成がわかりやすくなる。サンプルでは、Linearレイアウトにボタンが1つ配置されているのがわかる。
実機でデバッグしてみる
MainActivity.csを開く
デリゲートを使ったコールバックの定義あたりにブレーク指定する
button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
準備ができたら、デバッグ実行でターゲットを指定する。以下のようにPCにタブレットをUSB接続した状態だと、実機が選択できるはずである。実機を選択した状態で、デバッグ実行する。
ブレークでちゃんと止まることが確認できる
アプリが実機で起動して、ボタンをクリックするたびにブレークされる
とりあえず、Androidプロジェクトでは、Fireタブレットでもアプリが作成できることが確認できた。
Xamarin.Formsを使った開発について
当初は、こちらで作成するつもりだったが、結論だけまとめると以下であった。
- 一応サンプル起動までは実機でもできた
- ただし、デフォルトの状態だと、ターゲットをAndroid5.1.1まで下げるとビルドエラーになる
- Xamarin.Formsと.NET SDKのバージョンをある程度まで下げると、ビルドエラーは解消するが、バージョンが合ってない?旨のワーニングが残って試行錯誤しても消えない
- なんとなくAPIレベルが23以上じゃないとダメなんじゃないかと推測(LollipopはLv22)
- Fire OSのベースレベルが23以上になるまでは、通常のAndroidプロジェクトで作成したほうがよさそう