カスタム検索

2010年3月11日木曜日

AppStoreへ申請するアプリにjson-frameworkを使用している場合の注意点

AppStoreへアプリを登録する際に、嫌というほど目にする以下のエラー

The binary you uploaded was invalid. The signature was invalid, or it was not signed with an Apple submission certificate

基本的にはCodeSign系のエラーですが、その他のエラーもすべてこれで帰ってくるもよう。
Webで調べたら以下のような症状があった。

・Developerの証明書でビルドしていた
・Distribution or Provisioningの証明書の有効期限が切れていた(それぞれ別の有効期限になるので注意)
・Info.plistのBundle identifierが登録した内容と違っていた
・プロジェクト>アクティブターゲット"あぷり名"を編集>プロパティ>識別子 がInfo.plistのBundle identifierと一致しなかった(基本的には同期するはずなんだけども・・・)
・アイコンファイルのサイズが57x57ではなかった、また24bitでなかった(これに結構ひっかかってた・・・24bitのPNGでもMacのプレビュー>インスペクタではビット深度8と表示される)
・コード署名IDの設定を、プロジェクト>プロジェクト設定を編集 から行った(必ず、アクティブターゲット"あぷり名"を編集 から行った方が良いです)

Xcodeのビルドは基本的に差分ビルドなので、Distributionの場合は毎回クリーンした方が良いです。
そして、Xcode自体にもなんやらキャッシュっぽい感じで設定が残るようです。
公式にもありますが、いったんCodeSignをはずして、クリーンしてフォルダも消して、Xcodeを再起動してCodeSignを当てなおすとうまく行くとかあるようです。

で、色々やった結果全部だめだったので途方にくれていたのですが、ふと使用しているライブラリのCodeSignとかどうなるんだろと思って調べたら、これがビンゴでした。

cocos2dとjson-frameworkを使ったのですが、cocos2dは特に設定無しで問題ないもよう。
json-frameworkでは、2.2の頃にCodeSign系のなんやらがあったようで、以下の設定をすると良いとの事でした。

「アクティブターゲット"あぷり名"を編集」から「コード署名リソース・ルールパス」に、$(SDKROOT)/ResourceRules.plist を入力

説明には「ビルド実行可能ファイルのコード署名後に変更する有効な理由のあるファイルを除外するために、オプションで使用されます」とありますので、なんかの理由があるんでしょ、きっと。
2.2の頃の話+AdHocや実機デバッグでは問題なく動いていたので、マサカネーと思いつつアップしたらあっさりと通りました(><)

そんなわけで、転職しましてWebプログラマじゃなくなっていたりします。(Webアプリも書いていますが・・・)
無料アプリなので審査が通ったら公開致します :)

0 件のコメント: