和時計をリリースしたところで、iPhone SDK 3.0 beta版をインストールしてみた所、Code Signingエラーが発生して、iPhone/iPod touchの実機でテストする為のビルドも、Distributionする為のビルドもできなくなるというトラブルに遭遇しました。
さらに、テスト用の証明書(Certificate)も有効期限切れになっていて、何が何やら分からない事になって、相当苦戦しましたが解決しました。
今回のトラブルは以下の2つが原因で、本来はそれぞれ別のものですが、それぞれどう対応すればいいかをまとめておくので、参考にどうぞ。
1)iPhone SDK 3.0 beta版インストールによるCode Signingエラー
2)証明書の有効期限切れと、Certificateを作成した時に使った、キーチェーン内の公開鍵の紛失
1)については、自分の場合は日本語対応の問題でした。
現象としては、ビルドの設定の「Any iPhone OS Device」の値を表示した時に、Provisoningファイルに対応したCertificate名が「?」で表示されていて、正しいものが選択できませんでした。
この為、Code Signingエラーが発生していました。
システム環境設定の「言語環境」で設定できる言語の優先順序を、通常は「日本語→English」となっている所を、「English→日本語」として、XCodeを英語で起動すると解決します。
ただし、この方法だと全てのアプリケーションが英語で起動するようになってしまいます。
アプリ個別で英語にする方法が無いかと調べた所、ばっちりありました!
以下の手順でXCodeだけ英語で起動するようになります。
A)Finderで「/Developer/Applications」を開いて、「XCode」のアイコンを選択。
B)「ファイル→情報を見る」か、「コマンド+Iキー」でアプリケーションの情報を表示
C)「言語」の部分を表示して、「日本語」のチェックを外す
こんな方法があるなんて初めて知りました。
XCodeのメニューなんかも全部英語になってしまいますが、以上の方法でCode Signingできるようになります。
beta版なのでバージョンが上がって行けば解決するとは思いますが、今は英語で使うしかなさそうです。
2)の証明書の期限切れについては、「キーチェーンアクセス」で証明書を要求する為のファイルを作って、管理サイトにアップして、発行された証明書をインストールし直せばいいのですが、なぜかキーチェーン内の公開鍵のファイルが消えていて、そのせいかうまくできませんでした。
鍵のExportはしていたので、インポートすれば問題無く使えるのかと思いきや、秘密鍵しか復旧せず、どうにもならない状態に・・・。
Appleのドキュメントを読むと、秘密鍵の紛失については注意があるのですが、どうも秘密鍵だけではダメみたいです。
今回は、1)の問題と合わさってた事もあって、あれこれ試行錯誤し始めて、Distribution向けのキーも消してしまったりして、大変な事になってたのですが、1)の問題の原因が分かったので、とりあえずTime Machineで、昨日の状態に復元して、Distributionビルドはできるようになり、有効期限が切れた証明書の対応だけとなりました。
※追記
Time Machineで復旧したキーチェーンアクセスのデータは、「/ユーザーのHomeディレクトリ/ライブラリ/Keychains」にあります。
最終的には以下の手順で復旧しました。
A)テスト用のCertificateを発行してた秘密鍵を削除。
B)公開鍵/秘密鍵のペアと、証明書要求の為のファイルを作り直す。(開発開始時にやったのと同じ方法)
C)証明書要求のファイルを管理サイトにアップして、証明書を作成。
ダウンロードして、キーチェーンアクセスに登録。
D)プロビジョニングファイルも新しい証明書と対応するように更新し、ダウンロード&端末にインストール。
鍵をなくすと復旧不可能なのかと思ったりもしましたが、最初からやり直せば問題無いようです。
今回はテスト用の証明書の鍵の紛失でしたが、Distributionの場合はバージョンアップ時などに問題が出る事もあるのかも!?
鍵は公開鍵/秘密鍵ともにバックアップをしておいた方が良さそうです。
まだ熟読できてないので、どのようにバックアップするのがベストなのかは謎ですが、Appleのドキュメントも鍵の管理についてのドキュメントが増えていたので、一度しっかりと読んでおいた方が良さそうです。
今回はTime Machineのお世話にもなりましたが、正しくビルドできる状態で、一度バックアップしておくと、本当にいざって時に頼りになります。
新型のTime Capsuleも出た事ですし、まだ導入されてない方はお勧めです。
週末試したい事があったのに、トラブル対応ですっかり潰れてしまいました・・・。
※iPhoneアプリ開発に関する投稿を今から始めるiPhoneアプリ開発にまとめました。
突然ですが、ほかに聞けるところが見当たらず、教えてほしいのですが、uploadの際このようなメッセージが、表示されるのですが、どこがいけないのでしょうか?
The binary you uploaded was invalid.The value provided for the key Minimum OSversion is not acceptable.
黄鮫さん
こんにちは。
自分も初めて見るエラーメッセージなので、なんとも言えないところですが、ビルドに使用したSDKは、3.0向けのbeta版ではなく、正式リリースされているFinal版でしょうか?
ビルド時のターゲットバージョンは2.2.1でしょうか?
今現在アップするアプリに関しては、3.0と互換があることも要求されているようなので、そのあたりも関係してるのかもしれません。
少し関係がありそうなページを見つけたので、リンクを張っておきますね。
http://www.iphonedevforums.com/forum/iphone-sdk-development/1139-minimum-os-version-plea-devs-user.html
あと思いつくところとしてはInfo.plistの記述が何か間違っているか位ですが、OSのバージョンについては、MacOS X向けのアプリのInfo.plistのキーにはありますが、iPhoneには無かったと思うので、違いそうですね・・・。
何か分かったらまたコメントしますね。
もし解決されたらコメント頂けると助かります。
コメント無い所を見ると解決されたのかも知れませんが・・・。
Appleが新しいドキュメント出してますね。
NDAの関係で詳しくは書けませんが、ドキュメントの通りの手順でやられたら問題無くアップできるのでは無いかと思います。