他人のiPhoneをテスト機として使用する(Ad Hocビルド)

他人の(自分以外の)iPhoneやiPadをテスト機として使用する方法をご紹介しておきます。
友人などにテストに協力してもらう場合には、iTunesを利用して識別子(UDID)を取得してもらいデバイス登録を行います。
デバイス登録が完了したら、Ad Hoc配布用のプロビジョニング・プロファイル(Provisioning Profile)を作成し、Provisioning Profileとアプリ本体を渡して、iTunesに取り込んで同期してもらうという流れになります。

iTunesを利用した識別子の取得 (iPhoneの持ち主側の作業)

まずは同期するときと同様にiPhoneをiTunesに接続します。
iTunesにiPhoneの項目(項目名はiPhoneの初期登録時に付けた名前になります)が出てきますので、その項目をクリックし、iPhoneの電話番号などの概要が書かれた画面を表示します。

ここで、電話番号付近をクリックすると、シリアル番号という項目が識別子(UDID)という項目に変わり、40文字の英数字が出てきます。

iTunesでの識別子(UDID)の表示

この識別子(UDID)の内容を開発者側に伝えます。
識別子(UDID)の内容は、識別子(UDID)を表示した状態で、編集メニューからコピーを選択(または、キーボードショートカットで、Windowsは[Ctrl]+[C]、Macは[command]+[C])でクリップボードにコピーすることができますので、メール本文などに貼り付けを行い、開発者に知らせるのが間違いがないでしょう。

Ad Hocで配布するための準備(開発者側の作業)

まずはAd Hocで使用したいデバイスの追加登録です。
デバイス登録は、自分のiPhoneを登録した時と同様に、iPhoneの持ち主から渡された識別子(UDID)がXcodeでのIdentifierに相当しますので、これを登録します。

Ad Hocを使用するためには、Development登録で証明書を要求、インストールした手順と同様にDistribution用にも証明書の要求とインストールが必要となります。
Provisioning PortalのCertificateを開き、タブ形式となっている部分のDistributionを選択します。
Developmentで登録した際と同様の画面となっていますので、ここから証明書の要求を行ないます。
詳細手順は割愛しますが、リクエストファイルはDevelopmentの時と同じ物を使用して登録が可能です。
出来上がった証明書はダウンロードして、ダブルクリックする事でキーチェーンに登録されます。
なお、WWDRは、Developmentの証明書登録を行なった時のものと同じですので、既に登録済みであれば、新たにダウンロードして登録する必要はありません。

デバイス登録と証明書のインストールが完了したら、Distribution用のProvisioning Profileを作成します。
Provisioning Profileの画面から、Distributionタブを開き、Developmentの作成時と同様にプロファイルを作成します。
作成が完了したらダウンロードして、ダブルクリックすることで、Xcodeのオーガナイザに追加されます。
ここで作成したProvisioning Profileが、アプリをインストールしたいiPhoneの持ち主に渡すファイルのひとつとなります。

Ad Hoc用のアプリケーションビルド(開発者側の作業)

まずはビルドターゲットの作成です。
Releaseを使用しても問題ないのですが、実際にApp Storeにリリースする際の書き換えが手間となるため、Releaseの構成をコピーしてAd Hoc用の構成を作成しておきます。
Xcodeのプロジェクトメニューから「プロジェクト設定を編集」を開きます。
構成のタブにあるReleaseを選択し、複製ボタンをクリックし、名前をAd Hocなどとします。

ビルドターゲットの設定

続いてEntitlementsを追加します。
Xcodeのプロジェクトウィンドウのプロジェクト名を右クリックし、追加から新規ファイルを選択します。
iPhone OSのCode Signingを選択し、Entitlementsを選んで次へ進みます。

ファイル追加によりEntitlementsを追加

Entitlementsの追加は、dist.plistなどと名前を付けて完了です。
ここでの名前は短い物にしておいた方が良いようです。(長い名称をつけたらエラーが出てしまいましたので、スクリーンショットではあえてぼかしを入れておきました)

Entitlementsの追加

出来上がったEntitlementsの編集ペインのRootにget-task-allowというキーを追加し、TypeはBOOL、Valueのチェックボックスはチェックしない状態としておきます。
get-task-allowは、SDK 4.0から自動で出てこなくなりました。
以前のバージョンでは、キーが存在しない時はTRUEの扱いとなっていたため、手動でキーを追加しFALSEを設定しています。

get-task-allowの設定

続いて、ターゲットを右クリックし、情報を見るからAd Hoc構成のビルド設定を行ないます。
Code Signingの項目で、コード署名のAny iPhone OS Deviceの値をiPhone Distributionとします。
証明書のインストールに失敗していると、ビルドした時にここでエラーとなりますので、インストールした証明書が正しく自動選択されていることを確認しましょう。
あとは、先ほどのEntitlementsを指定します。
Code Signing Entitlementsに先ほどのEntitlementsの名前(例:dist.plist)を設定します。
Code Signing Entitlementsという項目は日本語では「コード署名権限」という項目になっていますので注意してください。
旧バージョンのSDKと位置が変わっていることに気付かず、その他のコード署名のフラグに記述してしまうとビルド時にCode Sign Errorが発生します。

ビルド設定

ここまで来たら、ようやくビルドです。
ビルドターゲットを、デバイスのAd Hocに設定します。
エラー発生などで再ビルドを行なう場合は、前回のゴミを消すためにビルド前にクリーニングを実行しておく事をお勧めします。

ビルドが完了したら、Productsにできた.appを右クリックし、Finderに表示させます。
これをiTunesのライブラリの項目にドラッグアンドドロップしてiTunesに登録します。
iTunesのアプリケーションに登録されたら、アプリケーション名を右クリックしFinderで表示をクリックすると、.ipaという拡張子のアプリケーションファイルが出来上がっているはずです。
これをProvisioning Profileと一緒に、アプリをインストールしたいiPhoneの持ち主に渡します。

Provisioning Profileとアプリをインストールする(iPhoneの持ち主側の作業)

開発者からProvisioning Profileとアプリ本体を受け取ったら、PC上の適当な場所(My DocumentsやDocumentsの中にiPhoneアプリなどのフォルダを作ると良いでしょう)にコピーします。
iTunesを起動し、PC上にコピーしたProvisioning Profileとアプリ本体をミュージックライブラリからアプリのあたりにドラッグすると、アプリがiTunesに取り込まれます。

プロファイルとアプリをiTunesに登録する

iTunesに取り込まれたら、iPhoneと同期することでiPhone本体にテスト版のアプリがインストールされます。
同期エラーが出た場合は、本体のUDID登録などがうまく行っていない可能性がありますので、開発者に連絡してください。

カテゴリー: iPhone実機でのテスト パーマリンク

他人のiPhoneをテスト機として使用する(Ad Hocビルド) への8件のフィードバック

  1. ダイゴロウ のコメント:

    この記事を読まさせて頂きました。iTunesに登録したアプリケーションの名称の下に「不明なジャンル」と表示されます。この表示を変更、または避ける方法はあるのでしょうか?

    • jun のコメント:

      コメントありがとうございます。
      そこは気にしたことがありませんでした。
      iTunesで出てくるジャンルはストアの販売カテゴリが表示される部分かと思いますが、カテゴリ自体はビルドの段階では指定せずiTunes Connectからアップロードする際に指定するため、App Store経由でなければ入らないと思います。

  2. nacho のコメント:

    他人のiPhoneをテスト機として使用しました。

    が、修正版のアプリがうまくインストールできません。

    iTunesでは上書きができないと聞いたので、
    Provisioning Profileとアプリを削除し、新たにインストールしたのですが、
    「リソースが変更されているためiPhoneにインストールできませんでした」というエラーがでます。

    開発している制作会社は、まだ削除しきれていないファイルがあるのではないかということなのですが、言われた場所のファイルを削除をしています。

    実機を見ないとなんともとのことなんですが、
    東京と大阪ですぐに見てもらえる状況ではありません。。。

    何か考えられることはあるのでしょうか?

    • jun のコメント:

      コメントありがとうございます。
      自分はその現象に遭遇したことがありませんが、購入したアプリでも発生することがあるようですね。
      念のためやってみるというレベルになってしまいますが、
      ・iPhone側の旧アプリを削除
      ・iPhone側のProvisioning Profileを削除
      ・iTunesのProvisioning Profileを上書き
      ・iTunes側の旧アプリを削除して新アプリを入れ直し
      この後、同期実行という流れです。

      あとエラー文言から考えられる事としては、開発側がビルドする際に古いリソースへの参照が残ったままビルドしている可能性もあります。
      ビルド前にはクリーニング実行というのは基本なので、制作会社であればこれをやっていないということはないと思いますが…

      確実にコレですと言い切れないのがもどかしいところですが、ご参考になれば幸いです。

  3. skm のコメント:

    XCode4.2版ができると、とてもうれしいです。

    • jun のコメント:

      コメントありがとうございます。
      Xcode 4.2というより4から設定部分はほぼ半自動になっていますが、見た目がだいぶ変わっていて分からないということでしょうか。
      どのようにまとめるか考えてみます。^^;

  4. レンコ のコメント:

    AdhocのDLがよくわからず、ググッて訪問しました。
    参考になりました。あざす。シェアいたしました。

  5. ピンバック: 他人の端末にテストアプリをインストールする方法 | 健巳創作

コメントを残す

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