letsspeak's diary

世界を大いに盛り上げるためのletsspeakの日記。

Xcode起動時に古い証明書が自動登録される件

文章だけで分かりづらいですがメモ。

Provisioning PotalのCertificatesとmobileprovisionファイルは対になっているので、たとえばCertificatesを更新した場合には、mobileprovisionも新しいものが必要になります。

ただ、旧いmobileprovisionの有効期限が切れておらず、旧いCertificatesがまだMac上に残っている場合には、これをそのまま使用して実機転送することも可能っぽいですね。

しかしながら問題がありまして、

キーチェーンのログイン項目に同じアカウントでProvisioning PotalからダウンロードしたCertificatesが2つ以上あると実機転送時にXcodeがCode Signing Error を吐きます!

そのため、自分が使用したくない方のCertificatesをキーチェーンから削除するのが鉄則のようです。

※「書き出す」などで証明書の一時退避が可能なようです。

 

さて、無事キーチェーンからの削除が終わりとりあえずXcodeを再起動してもういっかい試してみるか〜と思うと、Xcodeちゃんがまた同じエラーを吐きます。

あれ、よくみるとXcodeの起動時に消したはずの証明書がまたキーチェーンに出現しているよ。

そんな場合は、Organizerから古いmobileprovision(Provisioning Profile)を削除するといいようです。

Xcodeさんは気が利くので、対になったCertificateをこっそり保持していて、足りない場合にキーチェーンに登録してくれるのです!うzやさしい!

参考
xCode 4 -reinstalls keychain certs that I delete - stackoverflow
http://stackoverflow.com/questions/5264481/xcode-4-reinstalls-keychain-certs-that-i-delete

 

古いmobileprovisionの削除が完了しXcode再起動時に古い証明書も登録されない。

新しいmobileprovisionと証明書の登録も済んでいる。

でも実機転送が失敗するよ!っていう方は、試しに適当なプロジェクトを新規作成してみてください。

もしこれで実機転送がうまくいく場合、プロジェクトファイルにゴミ(古い証明書などを使用する設定)が残っているのかもしれません。

実機転送がうまくいかないプロジェクトのファイル .xcodeprojを右クリックして「パッケージの内容を表示」から下記ブログ記事に記載されているファイルを修正すると、治るようです。

参考
Code Sign error:Provisioning profile 'xx' can't - cowのブログ
http://ameblo.jp/iphone0126/entry-10862455082.html