Visual Studio for Mac で作成した Xamarin.Forms アプリを実機(iOS/Android)にインストールする

  • 5
    Like
  • 0
    Comment

Xamarin(その2) Advent Calendar 2016 の 11 日目です。Visual Studio for Mac が公開され、新しいもの好きとしてすぐ喰いつきました。そこで色々ハマったことを Tips 的にまとめたいと思います。

きっかけ

JXUG 福岡支部が発足され、12/10 に発足記念勉強会が開催されました。その事前準備で色々ハマったことがきっかけでした。

使った環境

  • macOS 10.12.1
  • Visual Studio for Mac Preview 2
  • Xcode 8.1
  • iPhone 6 Plus(iOS 10.1.1)
  • GALAXY S SC-04E(Android 5.0.1) ※ SIM なし

使用コード

勉強会前は Xamarin.Forms のスケルトンアプリ(「Welcome to Xamarin Forms!」表示のみ)を使用しました。勉強会後は、JXUGC #21 のハンズオンのコードを使わせてもらっています。ハンズオン手順書はこちら

ハマり問題 〜Android 編〜

勉強会事前準備中

MacBook Pro (Retina, 15-inch, Late 2013) で Android 実機接続後、実機を指定してビルドを実施。複数のエラーが出力されるが全て以下のエラーでした。

Unable to find application Mono.Android.Platform.ApiLevel_24 or Xamarin.Android.Platform

この時にやったこととしては、以下の通りです。
* 事前準備のためにインストールした Android SDK 7.1.1(API 25)を全てアンインストール
* Visual Studio for Mac の Android Application の Minimum Android version/Target Android version を Android 6.0(API level 23)で統一

ひとまず以上をやったことで SC-04E に Xamarin.Forms アプリをインストールできることは確認しました。

勉強会後

iMac (21.5-inch, Mid 2011) で Advent Calendar ネタ準備のために同じ環境を用意して Xamarin.Forms スケルトンアプリを作成。エミュレーターで動作確認後、実機にインストール。まさかの正常インストール成功。正常に実機で動いてしまったという…。

まとめ

再び MacBook Pro (Retina, 15-inch, Late 2013) にて Android SDK 7.1.1 をインストール。Android Application の設定を iMac (21.5-inch, Mid 2011) と同じ Minimum Level - Android 4.4(API level 19)、Target Level - Android 6.0(API level 23)に変更して実機にインストールしてみる。ここでも正常インストール成功。一体原因は何だったのか…。実機上のサンプル画像は以下のようになっています。

Androidサンプル1 Androidサンプル2

ハマり問題 〜iOS 編〜

勉強会事前準備中

ハンズオンでは「Apple Developer Program 登録推奨」とありましたが、貧乏性を発揮しました。よって、田淵義人さんが書かれた以下の記事を参考に 0 円で出来るかチャレンジしました。

Xcode 7 と Xamarin Studio Starter で1円も払わずに自作 iOS アプリを実機確認する (インスパイア記事)

結論から書くと、Xcode 8.1 / Visual Studio for Mac の組み合わせで同じようにインストールは可能でした(でも、そこそこ確認に時間はかかりました)。

勉強会後

Android 同様、事前準備では MacBook Pro (Retina, 15-inch, Late 2013)、Advent Calendar ネタ仕込みのために iMac (21.5-inch, Mid 2011) を使用しています。Xamarin.Forms スケルトンアプリをフリープロビでインストールできました。再度、ハンズオンのアプリをインストールするために MacBook Pro (Retina, 15-inch, Late 2013) に接続した時、問題発生。

iMac の認識デバイス
iMac の認識デバイス
MacBook Pro の認識デバイス
MBP の認識デバイス

まさかのデバイス認識しない問題発生(心の中では大きくガッツポーズ)

よくあるパターン

とはいえ、そう珍しいことでもなかったりします。構成プロファイルを作成し、iOS デバイスに構成プロファイルをインストールさせるツールで Apple Configurator 2 というものがあります。AC2 がデバイスを認識していると、その他のツールで iOS デバイスが認識されないケースがあります。この時 AC2 が起動中でした。よって、AC2 を終了させて Visual Studio for Mac を再起動してから確認。まだ認識されず。

よくあるパターン 2

AC2 同様に iTunes が起動していたり、その他デバイスを認識するようなツールが起動中だとデバイスが認識されないケースがあります。この時は iTunes が起動中でした。AC2 の場合と同じように iTunes 終了後に Visual Studio for Mac を再起動。やっぱり認識されず。

やってみたこと

エラーメッセージなどは特に出ていないので正直お手上げな状態でした。「ひとまずビルドしてみよう」と思いたち、Debug モードを変更して実行してみることに。具体的には以下のような変更です。

変更前
変更前
変更後
変更後

この状態のエラーメッセージで何か情報を得られないだろうか?というのが動機です。結果、

エラーダイアログ

というダイアログが表示されました。「まぁ、そうだよな」と思っていたのですが…。

iOSサンプル1

なんかインストールされてるっぽい…。おもむろに起動してみる。

iOSサンプル2 iOSサンプル3

[Payload Too Large]()
詳細ページ画像がアップロードできない!

Qiitaに1件も投稿していない時の画像アップロード容量の上限は月間2MBまで

初投稿だったからか…。

まとめ

画像はアップロードできませんでしたが、何故かインストールが成功し正常に動かせることは確認しました。一体何が起きているのだろうか…。

総括

「ハマったことを Tips 的にまとめたい」と最初に書いておきながら、iOS は何かよく分からないけどインストールされた、Android においては再現できずに正常に動いてしまう、というグダグタな結果になりました。明らかに準備不足でした。きっと リリース版は楽にインストールできるはずです…。