2010年6月3日木曜日

iPhoneアプリを公開用に署名してビルドするには?

アプリを公開しようとして「iTunes Connect」でプログラムバイナリをアップロードしたら拒否された。どうやら開発用の証明書による署名ではダメで、公開用の証明書を取得して署名する必要があるとわかった。

その他にも色々やる必要がありそうだ。公開直前のアプリを公開用に署名してビルドするまでをまとめておこうと思う。

一連の手順は、「iPhone Dev Center」>「iPhone Provisioning Portal」>「Distribution」に英語で書いてある。


「iPhone Dev Center」にログイン

iPhone Dev Centerにログイン
・右ペインから「iPhone Provisioning Portal」へ
・左ペインから「Certificates」へ
・「Develop」タブが開いていて、現在使っている開発者用の証明書のリストが表示される
・「Distribution」タブへ


公開用証明書を申請する

・「Request Certificate」ボタンで説明と申請ファイルをアップロードするボタンが出る
・/Application/Utilities/キーチェーンアクセス.app起動
・「キーチェーンアクセス」メニューから「証明書アシスタント」>「認証局に証明書を要求」
・証明書アシスタントが起動する
・「証明書情報」で「ユーザーのメールアドレス」「通称」を適当に入力し「要求の処理」では「ディスクに保存」を選択
・保存ダイアログが出るので適当な場所に「CertificateSigningRequest.certSigningRequest」を保存する
・「完了」で証明書アシスタントを閉じる
・サイトに戻り、下のほうにある「ファイルを選択」で保存した申請ファイルを選択
・「Submit」
・「Distribution」タブに自動的に戻り、「Status」が「Pending Issuance」となっている行が追加される
・しばらく適当に「Developer」タブと「Distribution」タブを行き来していると「Status」が「Issued」になって証明書が発行される
・「Download」ボタンで「distribution_identity.cer」ファイルを適当な場所にダウンロード
・もしまだ「AppleWWDRCA.cer」をインストールしていない場合はダウンロードしてダブルクリックでインストール
・キーチェーンの「ログイン」を選択し「分類」で「証明書」を選ぶと「Apple World Wide Developer Relations Certification Authority」という証明書がインストールされていることを確認できる
・さらにダウンロードした「distribution_identity.cer」をダブルクリックでインストール
・キーチェーンの「ログイン」を選択し「分類」で「証明書」を選ぶと「iPhone Distribution:〜」という証明書がインストールされていることを確認できる
・一応証明書の中の秘密鍵を右クリックで「〜を書き出す」をしてバックアップしておいたほうがいいらしい


公開アプリ専用AppIDを作成

普段の開発用には「appidprefix.com.domainname.*」のようなどんなアプリにも使える汎用的なAppIDを使っているが、公開用には向かないようなので、公開アプリ専用のものを新しく作成する。

・「Provisioning Portal」>「App IDs」へ
・「New App ID」から「Create App ID」ページへ
・「Description」にアプリ名などを入力。英数字のみ
・「Bundle Seed ID (App ID Prefix)」デフォルト選択の「Generate New」のまま
・「Bundle Identifier (App ID Suffix)」に逆ドメイン方式でIDを入力。例えばcom.domainname.appname
・「Submit」
・元のページに戻り、追加したものがリストに追加されていることが確認できる
・Push NotificationやIn App Purchaseなどを使うにはApp IDごとにさらに設定が必要らしいけど、今回は必要ないのでスキップ


公開用プロビジョニングファイルを取得してオーガナイザにインストール

・「Provisioning Portal」>「Provisioning」へ
・「Distribution」タブへ
・「New Profile」から「Create iPhone Distribution Provisioning Profile」ページへ
・「Distribution Method」はデフォルト選択の「App Store」まま
・「Profile Name」にアプリ名を入力
・「Distribution Certificate」には作成済みの公開用証明書が表示されている
・「App ID」で公開アプリ専用のApp IDを選択
・「Devices (optional)」はグレーになっている。AdHoc用らしい。
・「Submit」
・追加した行の「Status」は「Pending」になっている
・しばらく「Distribution」と「Development」タブを行き来していると「Active」になる
・「Download」で「〜.mobileprovision」をダウンロードする
・「〜.mobileprovision」をダブルクリックするとオーガナイザが起動する
・「IPHONE DEVELOPMENT」>「Provisioning Profiles」を見るとインストールされていることを確認できる


アプリを公開用にビルドする

・Xcodeで公開するするアプリのプロジェクトを開く
・「プロジェクト」メニュー>「プロジェクト設定を編集」>「構成」タブ
・「Release」構成を「複製」して「Distribution」とリネームして選択
・「ビルド」タブへ
・「コード署名ID」>「Any iPhone OS Device」の値列で「Automatic Profile Selector」の「iPhone Distribution」を選択して閉じる
・「Distribution」構成を選択していつものようにビルドする
・ビルド中に「codesignは〜」というダイアログが出る。「常に許可」する。しないと、リビルドした時にいちいち聞かれるのでうざい


ふぅ〜(^^);

ふぅするな!延長戦の最後の最後はもう、スタミナがモノを言うんだ!(by 空手家 大山倍達 先生)
大山倍達 - Wikipedia