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

[Xamarin(その2) Advent Calendar 2016](http://qiita.com/advent-calendar/2016/xamarin2 "") の 11 日目です。Visual Studio for Mac が公開され、新しいもの好きとしてすぐ喰いつきました。そこで色々ハマったことを Tips 的にまとめたいと思います。

#きっかけ
JXUG 福岡支部が発足され、12/10 に[発足記念勉強会](https://jxug.connpass.com/event/41652/ "")が開催されました。その[事前準備](https://github.com/ytabuchi/XamarinHOL/blob/master/XamarinHandsOn_Prepare_JXUG.pdf "")で色々ハマったことがきっかけでした。

#使った環境
* 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 の[ハンズオンのコード](https://github.com/xamarin/dev-days-labs/ "")を使わせてもらっています。ハンズオン手順書は[こちら](https://github.com/chomado/xamarin-dev-doc/tree/master/hands-on "")。

#ハマり問題 〜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）に変更して実機にインストールしてみる。**ここでも正常インストール成功**。一体原因は何だったのか…。実機上のサンプル画像は以下のようになっています。

<img width="245" alt="Androidサンプル1" src="https://qiita-image-store.s3.amazonaws.com/0/65050/e7f479aa-cdb1-20bd-b442-37a10d475cbd.png"> <img width="245" alt="Androidサンプル2" src="https://qiita-image-store.s3.amazonaws.com/0/65050/6627f5d9-8ac1-2287-27da-a3e5f8635d46.png">

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

[Xcode 7 と Xamarin Studio Starter で１円も払わずに自作 iOS アプリを実機確認する (ｲﾝｽﾊﾟｲｱ記事)](http://ytabuchi.hatenablog.com/entry/2015/09/18/191258 "")

結論から書くと、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 の認識デバイス**
<img width="245" alt="iMac の認識デバイス" src="https://qiita-image-store.s3.amazonaws.com/0/65050/c8f32d23-caef-13f9-e315-dc4bc9e7f72f.png">
**MacBook Pro の認識デバイス**
<img width="245" alt="MBP の認識デバイス" src="https://qiita-image-store.s3.amazonaws.com/0/65050/ff3d2342-d96a-d5e9-cd77-37b1b62a19da.png">

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

##よくあるパターン
とはいえ、そう珍しいことでもなかったりします。構成プロファイルを作成し、iOS デバイスに構成プロファイルをインストールさせるツールで [Apple Configurator 2](https://itunes.apple.com/jp/app/apple-configurator-2/id1037126344?mt=12) というものがあります。AC2 がデバイスを認識していると、その他のツールで iOS デバイスが認識されないケースがあります。この時 AC2 が起動中でした。よって、AC2 を終了させて Visual Studio for Mac を再起動してから確認。まだ認識されず。

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

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

**変更前**
<img width="447" alt="変更前" src="https://qiita-image-store.s3.amazonaws.com/0/65050/68016a3a-b848-4618-342f-3cf422d2b93b.png">
**変更後**
<img width="428" alt="変更後" src="https://qiita-image-store.s3.amazonaws.com/0/65050/6b3f7e78-e065-7a23-201d-4c2f5c979b24.png">

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

<img width="400" alt="エラーダイアログ" src="https://qiita-image-store.s3.amazonaws.com/0/65050/c9886d4c-c7cf-b6e6-e623-9a48f2363460.png">

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

<img width="245" alt="iOSサンプル1" src="https://qiita-image-store.s3.amazonaws.com/0/65050/c7e8ba90-94f3-42a9-e051-a4cebc8e3791.jpeg">

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

<img width="245" alt="iOSサンプル2" src="https://qiita-image-store.s3.amazonaws.com/0/65050/3ad9851d-a333-4bb4-a3dc-aaf4d1351475.jpeg">  <img width="245" alt="iOSサンプル3" src="https://qiita-image-store.s3.amazonaws.com/0/65050/2d5b7b84-9ed3-9184-05c5-dd3ba749cbd8.jpeg">

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

[Qiitaに1件も投稿していない時の画像アップロード容量の上限は月間2MBまで](http://qiita.com/unsoluble_sugar/items/f61be798972883e44877)

初投稿だったからか…。

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

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