僕の頭の中でいつも悩むことを明文化してみました。まだ体系化できていないし検証が必要なものも多いです。不足があったり対処方法が間違っているかもしれませんので、その時は教えてくださると嬉しいです。
そもそもUDIDが間違っているかもしれないケース
- UDIDを間違っていないのか?
- 桁数が足りているか
- それはシリアルコードではないか?
- FFFFで始まっていたらダミーのUDIDの可能性を疑う -> 理由
- 桁数が足りているか
- UDIDを追加した人が自分の場合
- 正しくUDIDを登録しているか?(コピペミスなど)
- UDIDを追加した人が他人の場合
- どのUDIDを追加したか教えてもらう(後述のembedded.mobileprovisionの検証で使用する)
Provisioning Profilesの設定に誤りがある/間違ったProvisioning Profilesを使ってビルドしている
ビルドしてipaファイルが生成できている場合には、大抵Provisioning Profiles(以下、pp)に問題ないと思います。多くの場合、あとから追加したUDIDがビルド時に使用しているppに含まれていないケースが大半のような気がします。
- バイナリのipaファイルを解凍して embedded.mobileprovision をみる
- 追加したUDIDが含まれているか?
- Apple Dev Centerの「Certificates, Identifiers & Profiles」を見る
- デバイスに新しいUDIDが追加されているか確認する
- ppに新しいUDIDが追加されているか確認する
- デバイスだけ追加されていてppの方のチェックが付いていない場合がある
- 関連するppを一旦削除して、Xcodeを起動して手動でアーカイブする
- 適切なppがダウンロード/自動生成される
イレギュラーなケースとしてはUDIDは登録しているけど、ppがひとつも存在していない場合です。
- iOS Dev Centerにが登録されていないのにデバイスが追加されない
- Xcodeが自動生成した「iOS Team Provisioning Profile: *」のppを使ってビルドしている可能性を考慮する
最近考えていること
ひとつひとつビルドして確認することが多くて手間になりつつあります。
現在インストールされているppを調べるツールと、生成されたipaファイルを調べるツールが欲しい今日この頃です。
command /PATH/hoge.ipa -option で簡単にバージョン調べたり、使用されているppを調べたり、(Ad-Hocビルドの場合)使用可能なUDIDが取得できるようなツールないのかな。ありそうな気もするけれど
— さくさん (@ch3cooh) 2017年10月12日