AppStore申請(証明書)にハマる

2011/06/12

AppStoreに出品してるのにハマった。。。

Distributionのビルドできない

Android のアプリ公開がどんだけ楽か思い知った1日でした(苦)

Application failed codesign verification

キャプチャーとる余裕もなかったですが、コード署名認証の失敗です。 Application Loader でアップして気づきました。

Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011)

AppStore用のビルド構成作って、クリーンしてビルドしたのにダメです。 あと、以下のエラーも時折。

Code Sign error: The default keychain doesn't have an identity matching the profile 'アプリ名' and identity 'iPhone Developer'

まず、色んなとこ参考にした。 ・アプリ申請エラーの解決法「Application failed codesign verification. 」はまりポイント解説付き iphone adhoc ビルドの方法iPhoneアプリ申請時にハマったところ

個人的まとめ

Provisioning Portal のDistribution用証明書が有効か?

これはまず基本中の基本。 Distribution用証明書がなければ、実機テストの証明書同様にキーチェンアクセスで証明書をリクエスト。 自分も証明書は有効になってたので、本来は問題無いはずだった。 証明書

キーチェンアクセスの証明書、秘密鍵が有効か?

キーチェンアクセス Distribution用の証明書を作成した秘密鍵が本当に有効になっているか? 気づいたら証明書がゴチャゴチャになっていた。 証明書の期限が切れかかってたのを理由に、この際整理して作り直しました(Revoke)。 ここでさらにハマったのが、

証明書や鍵がキーチェンから削除できない!

そんなときは、Macを再起動しましょう。いや本当に、再起動したら削除できました。 キーチェンアクセス 何かのアクセス権減の関係でしょうか?

Distribution用の Provisioning Profiles が有効か?

有効な証明書の状態で、Distribution用の Provisioning Profilesを作成しないといけない(と思う)。 Provisioning Profiles 尚、 Provisioning Profiles が作成でいるってことは App ID があるという事なのでここは割愛。 自分は新しく証明書を作成したので、Provisioning Profiles の再作成した。 次は Provisioning Profiles のインストールと設定だ。

Distribution用のインストール

.mobileprovision ファイルをダウンロードしたらダブルクリックでインストールされる。 Distribution 確認はオーガナイザと実際のパスを見ればいい。

/Library/MobileDevice/Provisioning Profiles/

Developer用の Provisioning Profiles とは違って、自分の実機にもインストールできなくなっている。 申請者本人なら、実機インストールできると思っていたが。。。 よって、基本はビルドできたかどうかだけ判断すれば良い。

Xcode の Distribution用Provisioning Profiles 設定

恐らく、ここが一番ハマってしまうところかも知れない。 理屈をしらない自分は、手当たり次第だったが少しずつ理解してきた。

まず、Debug、Release、申請用のビルド構成を3つ設定する。 デフォルトは、Debug、Release、だから申請用ビルドは、Releaseを複製する。 Distribution このやり方は、あくまでも通例。 ポイントは、 Distribution用Provisioning Profiles や Bundle identifier が申請用に設定されて、 キレイにビルドすれば終わりという簡単な話です。簡単な。。。

Provisioning Profiles はターゲットでも設定できる

プロジェクトのビルド設定を何度も何度も見直して設定し、クリーンビルド、クリーンビルド。 そして「Application failed codesign verification」です。 そんな時は、グループとファイル > ターゲットをダブルクリックして確認。 これ、プロジェクト > プロジェクト設定を編集 と一見同じ画面ぽいけど、実は違ったりする。 普通はターゲットのビルドはいじらないはずだけど、結果的にターゲットからCode署名を設定したらうまくいった。 ターゲット ターゲット

Bundle identifier は重要

プロジェクト名と App ID が一致できなかったのが災い

ドメインに合わせようと、プロジェクト名はそのままでアプリ名を変えようと。。。 はい、失敗です。

プロジェクト名と 申請する Bundle identifier 一致させた方が混乱しない

ユーザに見えるアプリ名は、info.plist > Bundle display name で設定できるので未練を持たない事w プロジェクト名と Bundle identifier を一致させないと、システム側でエラーになるかと思われます。 なら、プロジェクト名を変えよう!と思いましたが、DB絡みの設定があって断念しました。

以上、とりあえずざっとなぶり書き。

ちなみに、iTunes Connect や Application Loader とかはスムーズにいきました(英語文章以外・・・)