Xcode6:ipa書き出しでのトラブル対応


はじめに

Xcodeでipa書き出しを行う場合は
自動で作られたXCなprovisioing Fileでの運用への移行を検討しています。
Xcodeでビルドするのに自分で作成したProvisioing Fileを使うのがつらくなってきています。

こまったこと

個人ライセンスならともかく、チームで使うライセンスの場合

  • デバイスの追加
  • Agentの証明書の更新

これらが影響してipaの出力時ワーニングが起こることを確認しています。また

  • 自分で作ったProvisioing FileがあるのにXCなProvisioing Fileが生成
  • 自分の開発と関係のないProvisioing Fileが設定

など、トラブルが増えました。

参考URL

トラブル事例

ほぼ、デバイス追加時に発生します。
証明書についてはprovisioing Fileの生成のタイミングで困ることがありますが、デバイス登録ほどの頻度はないはず。

XCなProvisioing File の生成

  • 開発者ライセンスに登録しているデバイス全部が設定されていない などなど

対処

デバイスをどうしても限定したい場合を除いてXCなProvisioing Fileを使う。戦わない。

一番新しく作成された証明書がデフォルトで設定されるため、証明書が複数あり、使用しているAgentの証明書が古い方であればiTunes Connectで使用中の証明書に更新することが必要。

自分の開発と関係のないProvisioing Fileが設定

Push通知や iCloudなどはユニークなBundle Identifierが必要です

Certificates, Identifiers & Profiles

If you plan to incorporate app services such as Game Center, In-App Purchase, Data Protection, and iCloud, or want a provisioning profile unique to a single app, you must register an explicit App ID for your app.

たとえば次のようなBundle Identifer を設定したAppIDがあり

(a)ユニークなBundle Identifer

com.example.hoge.huga

  • Push通知、その他ユニークなBundle Identiferを必要とする機能が設定済み

(b)複数アプリで利用できるワイルドカードなBundle Identifer

com.example.hoge.*

  • 特に機能なし

(a)にprovisioning Fileとして不適ということがあり、(b)を選択された場合に事故が起こりがちです。
この場合はwarningが起きないため、選択されたProvisioing Fileの表示を確認していれば大丈夫ですが、あまり長い表示名をつけた場合は見落とす可能性が高くなります。

そのため、Xcodeから出力したadhocでは特定機能が使えなくなっているということも起こりがちです。

対処

(b)を消せない場合が一番面倒です。
(a)にライセンス上の全端末を登録して更新、Xcodeで同期して臨みます。

他、Bundle Identifierを(b)とかぶらないように設定し直すなど。

参考URL

さいごに

コマンドを使うのは自動化を検討するシーンくらいにしたいのですが、これも検討しつつですね。