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

コメント

  1. 読んでいる最中に疑問に思ったことを見つけました。
    よろしければ、ご確認をお願いします。

    下記のドメインの記述形式が筆者様の逆ドメイン方式になっていません。
    こちらはこのままが正しいのでしょうか?
    > 普段の開発用には「appidprefix.com.domainname.*」の〜

    返信削除
  2. そうなんです。確かに変な感じがしますが、間違ってはいません。

    「appidprefix」はAppleが自動的に作成する英数字で、例えば、より具体的には

    M1KR32HJ5M.com.blogspot.kinsentansa.APPNAME

    という感じになります。

    (appidprefixは実際の値を適当に変えてありますが、ケタ数は同じです)

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?