Visual Studio2017でAndroidアプリ開発(Fire HD8)

とりあえず、前回の投稿でも触れたとおり、実機を入手したので開発環境だけでも構築して、その気になったらスムーズに開発できるようにしておく。

開発環境としては、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によるモバイル開発」を選択しておく。

visualstudio-setup01

オプションを減らしたりしてインストールサイズを減らすことも可能なので、必要ならネットで調べる。

Android SDKのインストール

VS2017では、最新のAndroidバージョン(Android7 API25)がデフォルトでインストールされているが、FireタブレットにインストールされているAndroid OS(Fire OS)はAndroid5.1.1、API22とちょっと古い。追加でインストールする必要がある。

VS2017からAndroid SDK Managerを起動する。

visualstudio-setup02

Android SDK Tools, Platform-tools, Build-toolsなどは最新がインストールされていて、古いバージョンを入れなくてもいい?(曖昧)

visualstudio-setup03

Fireタブレット用にAndroid5.1.1のSDKをインストールする。実機でデバッグするので、仮想端末では試さないのでSystem Imageは選択しない。(サイズが大きいので)

visualstudio-setup04

必要ないかもしれないが、Amazonが提供しているアドオンをインストールする。URLを追加する。

https://s3.amazonaws.com/android-sdk-manager/redist/addon.xml

visualstudio-setup05

ExtrasからKindle Fire USB Driver, Amazon Maps API v2を追加した。(ドライバーはWindows10なら要らないかもしれないがとりあえず)

visualstudio-setup06

接続確認

開発PCとタブレットを接続してAndroidデバイスとして認識するか確認する。

  1. FireタブレットをPCとUSB接続する。
  2. タブレット画面に「許可するか?」的な内容が表示されるので、許可(OK)する。
  3. Visual Studioの[ツール]メニュー以下からADB用のパスが利いているコマンドプロンプトを起動する。android_fire001
    デバイスとして認識しているか確認する。以下のようなデバイスがリストされればとりあえずOK
> C:\Program Files (x86)\Android\android-sdk>adb devices
List of devices attached
G090ME0673040JMH        device

デバイスの定義

レイアウト定義を行うためにも、デバイスを定義しておく。デフォルトではNexusなどのGoogle製品ぐらいしか定義されていない。一致するものがあればいいが、Fire HD8に合うものがないので、定義しておいたほうが、実機で実行したときの見た目の乖離が少なく済む。

Android Emulatorマネージャを起動する

visualstudio-setup07

Device DefinitionsタブからCreate Deviceを選択する。タブレットのスペックに沿った値を定義する。

Amazon Fireタブレットの仕様
Screen Layout and Resolution

avd_firehd8

Visual StudioでサンプルAndroidアプリを作成する(Androidプロジェクト)

プロジェクトの作成

まずは、通常のAndroidプロジェクトでサンプルを作成して、実機でデバッグできるところまでの流れを確認しておく。

とりあえず単一ビューアプリのプロジェクトを作成

vs-android01

自動生成されたプロジェクトの内容
vs-android02

マニフェストファイルで、ターゲットのAndroidバージョンを指定する。ターゲットが決まっているので、MinimumもTargetもAndroid5.1.1を指定している。
vs-android03

続いて、画面レイアウトの定義を選択する

vs-android04

Deviceに先ほど定義したAndroid Fire HD8を選択する。レイアウトのサイズや比率がアップデートされる。

また、Document Outlineを表示するようにすると、ユーザインタフェースの部品の構成がわかりやすくなる。サンプルでは、Linearレイアウトにボタンが1つ配置されているのがわかる。

vs-android05

実機でデバッグしてみる

MainActivity.csを開く

vs-android07

デリゲートを使ったコールバックの定義あたりにブレーク指定する

button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };

準備ができたら、デバッグ実行でターゲットを指定する。以下のようにPCにタブレットをUSB接続した状態だと、実機が選択できるはずである。実機を選択した状態で、デバッグ実行する。

vs-android06

ブレークでちゃんと止まることが確認できる

vs-android08

アプリが実機で起動して、ボタンをクリックするたびにブレークされる

vs-android09

とりあえず、Androidプロジェクトでは、Fireタブレットでもアプリが作成できることが確認できた。

Xamarin.Formsを使った開発について

当初は、こちらで作成するつもりだったが、結論だけまとめると以下であった。

  • 一応サンプル起動までは実機でもできた
  • ただし、デフォルトの状態だと、ターゲットをAndroid5.1.1まで下げるとビルドエラーになる
  • Xamarin.Formsと.NET SDKのバージョンをある程度まで下げると、ビルドエラーは解消するが、バージョンが合ってない?旨のワーニングが残って試行錯誤しても消えない
  • なんとなくAPIレベルが23以上じゃないとダメなんじゃないかと推測(LollipopはLv22)
  • Fire OSのベースレベルが23以上になるまでは、通常のAndroidプロジェクトで作成したほうがよさそう