iPhone/iPadアプリのadhoc 配布(配信)まとめ

iPhone/iPadアプリのadhoc 配布(配信)まとめASのおもちゃ箱開発ブログiPhoneアプリを知り合いに試してもらうために、adhoc配信について試してみたので、メモ。

(1)Device ID(識別子 UUID)の追加
iOS Provisioning Portal -> Devices -> Add Device で、配布先のDevice ID(識別子 UUID)を登録。
Device ID(識別子 UUID) は、配布先の端末をiTunesに接続して、確認可能。
iTunesに接続して、概要タブで見る限りは、識別子(UUID)が表示されていませんが、シリアル番号が表示されているところをクリックすると、表示が変わります。

(2)Profileの追加
iOS Provisioning Portal -> Provisioning -> Distribution -> New Profile で、Profileを追加
この時に(1)で追加したDeviceを選択

(3)Profileをダウンロード
開発環境のPC上で、Profileをダウンロードし、Finderからダブルクリックすると、オーガナイザが自動起動し登録される。
しかし、「A valid signing identity matching this profile could not be found in your keychain」というエラーになっている。

(4)Distribution用のCertificatesを追加
iOS Provisioning Portal→Certificates→DistributionからDistribution用の自分の証明書をダウンロード。
ダブルクリックしてキーチェーンに追加。
これで、(3)のエラーが消えます。

(5)plistの追加
XCode上のプロジェクトを右クリックし、新規ファイル追加→Code Sigining→Entitlements→次へ→dist.plistとして追加。
追加したdist.plistの”「get-task-allow」のチェックを外す。”という記載が他サイトの説明にあるが、どこをどうすればよいかわからかった。
調べると、iOS SDK 4からは、get-task-allowの定義が新規作成時に追加されなくなったらしい。
dist.plistの編集画面で、右クリックAdd Rowで行を追加し、get-task-allow という名前に変更する。(チェックをはずしたまま) 
参考サイト:http://for-our-happy-life.blogspot.com/2010/07/sdk4entitlementsplist.html

(6)構成の追加
XCode上のプロジェクトを右クリックし、情報を見る→構成で、Releaseを複製して、AdHocDistributionを追加。(名前はたぶんなんでもよい)

(7)plistの設定
「アクティブなターゲットを編集し、Code Signing Entitlements に dist.plist と入れる」とある 参考:http://www.sukechan.net/archives/185/
この段階では、コード署名権限には、dist.plistがすでに設定されていた。

(8)プロビジョニングプロファイルの選択
プロジェクトのターゲット→(プロジェクト名)を選択し右クリック、情報を見る。
コード署名 ID > Any iPhone OS Device でそのプロビジョニングプロファイルを選択する。
→(4)を忘れていると、adhoc用のプロビジョニングプロファイルが選択できない!
エラーが無い状態であれば、選択できるようになっているはず。

(9)ビルド
Device – x.x | AdHoc Distribution | (プロジェクト名)を選択し、ビルトと実行
「実行可能ファイルの起動エラー」と出るがファイルはできている。(Deviceではなく、Simulatorで作成すると、実機にインストールできなかったので注意)
Finderから、プロジェクトのフォルダを開き、build→AdHocDistribution-iphoneosの中にアプリのファイルを取り出す。(*.dSYMは必要ないらしい。)

「codesignは、キーチェーンに含まれるキー”“を使用して署名しようとしています。」と聞かれる。よくわからんが、「許可」。2回聞かれる。

(10)配布先へ送る
(3)でダウンロードしたxxxxxxx.mobileprovisionと(9)で取り出したアプリのファイルを圧縮して、配布先へメールなどで送る。

(11)配布先端末へのインストール
(10)で圧縮したファイルを解凍すると、xxxxxx.appディレクトリと、xxxxxxx.mobileprovisionがある。(Windowsで解凍した場合)
xxxxxx.appディレクトリと、xxxxxxx.mobileprovisionをiTunesのデバイスの所にドラッグ。
mobileprovisionをドラッグしたときに、「”xxxxxx.mobileprovision”はこのiPhoneで再生できないため、xxxxxxにコピー出来ませんでした。」と表示されるが、ちゃんとコピーされているらしい。
→同期後にデバイス上で、[設定]-[一般]-[プロファイル]を開きmobileprovisionファイルが登録されている事を確認できる。
アプリのリストから、画面が表示されているところにドラッグして、iTunes下部の適用ボタンを押す。

完了!!

<参考>
・一度、ad hoc用ビルドをした後に、デバッグ実行しようとしたときに、「 The executable was signed with invalid entitlements.」というエラーが出て実行できなくなりました。(5)でdist.plistのget-task-allowのチェックを外していたのが原因だったよう。チェックを入れると実行できました。
参考:http://www.electrodream.jp/iphonedev/index.php/2009/06/the-executable-was-signed-with-invalid-entitlements/

iPhone/iPadアプリのadhoc 配布(配信)まとめ」への3件のフィードバック

  1. Akihiro Seki 投稿作成者

    知り合いの初代iPod touch(3.1.3)だと、adhocで配信できませんでした。
    インストール後に「署名者が有効でない」というエラーが出てアプリが消えてしまいます。
    やむを得ず、直接mac miniを持ち込んで、直接つないでxxxxxxx.mobileprovisionを登録しました。さらに、オーガナイザーで「開発端末として使用する」をチェックしました。

    これで、インストールできました。
    その後は、xxxxxx.appディレクトリを配布するだけで、アプリが更新されるようになりました。

    この件、ちょっと原因不明です。おそらく、署名方法を何か間違っているのか、バージョンが古いせいか、のどちらかだと思うのですが。。。

  2. fukusin

    adhoc配布するために参考にさせてもらいました。

    手順(3)で「A valid signing identity matching this profile could not be found in your keychain」のエラーが消せなくてはまりましたが、私の場合、DistributionCertificatesをリセットすると直りました。

    リセット方法は、
    (1) iOS Provisioning Portal→Certificates→Distributionで「DistributionCertificates」をRevoke
    (2) ページを更新し、Request Certificatesから Certificates作成

    上記エラーではまる人が多いみたいなので、参考になれば。

    あと、私の場合、(7)plistの設定では、コード署名権限は空欄になっていて、下記にdist.plistを入力する必要がありました。
    プロジェクトファイル右クリック→情報を見る→ビルドタブ→コード署名権限

  3. tarachan

    同じように世代の古いiPodTouchで「署名者が有効でない」とエラーになり
    インストールできませんでしたが、Appleからリリースされている
    「iPhone 構成ユーティリティ」でインストールすることができました。
     
    ご参考までに。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>