App Center で初めてXamarin.Formsのプロジェクトをビルドして気になったところ
先日App Center祭りに参加して、その有用性を実感してて、是非活用したいなと思いつつ後回しになっていましたが、最近ようやく復習帳のプロジェクトをApp Centerでビルドしてみました。
だいたいうまくいったんですが、いくつか気になるところがあったのでメモしておきます。
iOSのプロジェクトがデフォルトでcsprojじゃなくてslnが選択されている
このままだとビルドは通るけど、ビルドをダウンロードしても中身が何もないという現象になりました。iOSのcsprojに変更することで解決しました。
Components の中にsampleのソリューションなんかがあるとエラーになる
Componentを利用している場合で、そのComponentがSampleのソリューションを含んでいるとビルドが通りませんでした。これはComponentsフォルダの該当のComponentの中のSampleを削除したら解決しました。
HockeyApp経由で登録されたアプリでのストアアップロードでこける
HockeyAppに登録したアプリは自動でAppCenterに登録されますが、これを利用してビルド設定してビルドするとそれは問題なく通りました。しかしDistributeのStore機能でiTunesConnectやGooglePlayにアップロードしようとするとエラーが出て失敗しました。なのでHockyApp経由のアプリは使わずにアプリを新規登録して、そちらで使うようにしました。その場合はストアアップロードも問題なくできました。
Automatically increment build numberをONにしてBuildIDを指定した場合の問題
既にアプリを公開していて、途中からAppCenterを利用する場合にこの設定にするとIDは1から割り振られるので、そのままだとストアに上げた時に「既にそのビルドある」と怒られます。開始番号とかは指定できないので地道に最新のビルド番号を超えるまでビルド→キャンセルを繰り返して対処しましたw 即キャンセルするとビルド時間はほとんど消費せずにビルド番号を増やせます。
ストアへのアップロードはビルドの結果をそのまま使ったりはできない
そういう機能はないみたいで、わざわざビルド結果からダウンロードしたものをアップロードし直す必要があります。これはかなりダルいですね。
多言語対応しているiOSアプリをストア配布した時は100%失敗する
なんか「それぞれの言語のwhat's new ちゃんと書け」と言われて失敗します。が、このエラーの場合は実はストアへの配布自体は成功しててiTuensConnect側でみるとちゃんとビルドにアップロードしたものが選択できるようになります。ステータスのメールも届くので、それで配布に成功したのか、それ以前のエラーなのかは一応判別できます。
ストアへの配布機能のiOSとAndroidの違い
iOSのiTunesConnectへの配布に関してはアップロードするだけで、自動で審査に提出したりはしません。しかしAndroidのGooglePlayへの配布はアップロードに成功したら即公開になります。iOSのノリでやったら公開されてしまってかなり焦りましたので要注意です。
おわりに
とりあえずビルドまでは問題なく便利に利用できました。ですが問題はストア周りですね。iOSはビルドのアップロードまでで止めてくれるので利用しようかと思いますが、Androidの方はちゃんとリリースノートとかを整えてから公開したいのでAppCenterでのストア連携の利用はやめとこうと思いました。
リリースノートなんかはどうせそれぞれのストア側でちゃんと書くので、AppCenterは大人しくアプリのアップロードだけしてくれたら良いと思いました。
まぁビルドだけでも、bin/obj削除の煩わしさやマシンが変わってprovisioningがーーという問題からは解放されるのでかなりありがたいですね。