とある器用貧乏の技術メモ

何でもは知らないわよ。Googleが知ってることだけ。

Visual Studio Xamarinから実機に転送できなくなって困った

Visual StudioからXamarinを使ってiOSの開発をしていてぶつかったトラブルなんですが、ググっても見つからなかったのでメモします。

 

MacにXamarin Studioをインストールして、WindowsのXamarin for Visual Studioからコンパイルさせているんですが、ある日実機に送り込んで実行させようとしたらうまく起動しなくなっていました。

それまでは、VS側で実行ボタンをポチっと押せば、しばらく待ったのちにMacにつないでいるiPhoneにアプリが転送されて自動で起動していたんですが、ある日実機デバッグしようとしたら、バイナリ(ipa)は作られるものの起動しない。

iTunesに読み込ませても、転送も出来ない。

 

ググってみても、「Xamarin使って無償で実機デバッグ」という話題ばかりが見つかって、Apple Developper登録済みの私にとっては意味がないノウハウばかり見つかって途方にくれてしまいました。

 

色々試行錯誤してやっと見つかった解決策と原因は、iOSアプリ作成の最大のはまりどころ「プロビジョニングプロファイルと署名」周りでした。

プロトタイプをTest Flightで飛ばしていたんですが、その際に指定するプロビジョニングと、ローカルで実機に転送するプロビジョニングが違っていたのが原因でした。

 

以下は正しい(と思われる)設定例

Application Loaderを使ってiTunes Connectにアップロードする場合は、図のようにDistributionの署名と、作成したアプリのIDを指定します。

f:id:PanicMeo:20160911195134p:plain

ローカルで実機に転送する場合は以下のように、Developの署名とワイルドカードIDで署名して、実機に送り込みます。

f:id:PanicMeo:20160911195442p:plain

どうやら、TestFlightを飛ばすために、いろいろいじっているうちに変更しちゃってたみたいです。

一応「Auto」という選択肢もあって、うまいことやってくれるみたいなのですが、私の場合うまく設定されなかったみたいなんですよね。。。

 

蛇足ですが、以下のようにipaを作成するようにしておかないと、肝心のアップロード用バイナリは作成されないので注意です。

バイナリは

~ライブラリ/Caches/Xamarin/mtbs/アプリ名/ランダムな文字列/bin/iPhone/Release/日付

フォルダの中に作られます。

f:id:PanicMeo:20160911200021p:plain

(まだXamarinを使い始めたばかりなので、もっと違う場所にあるのかもしれませんが・・・)

 

Xcodeでの開発もかじった程度だったので、プロビジョニング周りについて勘違いしているかもしれませんが、対症療法的に解決できましたってことで。

もっとスマートな方法があったら教えてもらいたいところです。