10月 2, 2008 - ソフトウェア    28 Comments

iPhone実機で開発プログラムを走らせる

全ては以下のappleの資料に記述されています。
あと日本語のリソースとして、以下のuzullaさんのブログが参考になります。
心配だったのは、uzullaさんのブログで、Appleのドキュメントの通りにiPhoneのOSのリストアをすると、全ての設定がふっとぶと書いてあったので、リストアしないで走らせることができるか?と、Developer Program の登録名が、英字ではなく日本語で名前を登録してあって、多くの場合、WEBのページで名前が「? ??」と表示されるので、このままで大丈夫か懸念がありました。
結論から言うと、アプリを転送するだけなら、OSのリストアは不要、日本語の名前でも大丈夫、でした。
ただし前提として、2008/10/1時点で、SDKは最新、iPhoneのOSは2.1であることです。
また、個人で開発する場合の設定です。チーム開発の場合はAppleのドキュメントに説明があります。
以下、その記録です。
iPhoneのDeveloper Programに有料で登録するところまでは、問題ないと思いますので、それ以降です
iPhone Development Certificateを得る
全てのiPhoneアプリケーションは、正しい、Certificateで署名される必要があります。Certificateは公開鍵、秘密鍵から成っていて、Xcodeがアプリケーションのバイナリに署名するのに使用します。
1.「アプリケーション」->「ユーティリティ」の「キーチェーンアクセス」を起動します。
iphone_20081001_1.png
2.「環境設定」から「証明書」タブを開いて、「OCSP」「CRL」が「切」になっていることを確認します。
iphone_20081001_2.png
3.「キーチェーンアクセス」の「証明書アシスタンス」で、iPhone Developer に登録したのと同じ、E-Mailと名前を入力し、「ディスクに保存」をチェック、「鍵ペア情報を指定」をチェックして「続ける」をクリックします。
iphone_20081001_3.png
4.「鍵ペア情報」で「2048ビット」「RSA」を確認して、「続ける」をクリック。続いてファイル名を指定して保存します。CSRファイルが保存されます。
iphone_20081001_4.png


Certificateの署名の承認を得るための要求を行います。
1. 「iPhone Developer Program Portal」にログインし、左のメニューから「Certificates」 -> 「Development」を選択し、「Add Certificate」ボタンをクリックします。
iphone_20081001_5.png
2. 「ファイルを選択」ボタンをクリックし、ローカルに保存したCSRを選択し、「Submit」をクリックします。
iphone_20081001_6.png
3. 認証要求を通知するメールが届きます。.
Approving Certificate Signing Requests
1. ポータルの「Certificates」セクションの 「Development」タブを選択します。アップしたCSRの「Action」で「Approve」をクリックします。
iphone_20081001_7.png
2. メールで承認された旨の通知が来ます。
Development Certificatesをダウンロードしてインストールする
1. ポータルの 「Certificates」–>「Distribution」セクションで、WWDR Intermediate certificate のリンクをコントロール-クリックし、「リンクファイルを保存する 」を選択して、ローカルに保存します。
2. ダウンロードした WWDR Intermediate certificate をダブルクリックし、キーチェーンアクセスを起動し、インストールします。
iphone_20081001_8.png
3.「Certificates」–>「Development」セクションで、認証名の 「Download」ボタンをクリックして、 iPhone Development Certificate をローカルにダウンロードします。
iphone_20081001_9.png
4. ローカルマシン上で、ダウンロードした .cer ファイルをダブルクリックし、キーチェーンアクセスを起動し認証をインストールします。
iphone_20081001_10.png
Appleのドキュメントでは、キーアクセスチェーンで、秘密鍵を安全なところにエクスポートしておくように注意書きがあります。(OSを再インストールしたり、複数のマシンで開発を行う場合など)
Xcodeでユニークな Device ID を得る
1.iPhoneを開発マシンにつないでXcodeを起動します。
iphone_20081001_11.png
2.「Window」のドロップダウンから、「Organizer」を選択します。Identifierの 40 文字の文字列が デバイスの UDIDです。この文字列を選択してコピーしておきます。
iphone_20081001_12.png
開発用のデバイスを追加する
ポータルの「Devices」で 「Add Device」をクリックします。デバイス名と、UDIDをペーストして、「Submit」をクリックします。なおデバイス名は英数字とスペースのみです。
iphone_20081001_13.png
iPhone OSをインストールする
デバイスのOSのリストアですが、設定が全て飛ぶという話だったので、私はスキップしました。
詳しくはAppleのドキュメントを参照ください。
App IDを得る
An App ID は、 iPhone OS ユーザーが自分のアプリケーションがキーチェーンにアクセスを許可し、また、 開発及び配布の Provisioning Profilesの一部となる、ユニークな識別子である。App ID の例は、8E549T7128.com.apple.AddressBook 、のような形をしている。最初の10桁は自動的に決まる。
もし、アプリケーションのスイートを作っていて、同じキーチェーンアクセスを共有する場合や、キーチェーンアクセスをしない場合は、作成する全てのアプリケーションで同じAppIDを作成できます。この場合は、App IDの最後にアスタリスクをつけます。この場合の App IDの例は、 R2T24EVAEE.com.domainname.* または R2T24EVAEE.* となります。
1. ポータルの 「App ID」 セクションを選択します。
iphone_20081001_14.png
2. 「Add ID」をクリックする。
3. App IDに対する名前を入力します。後で楽に参照したり識別するために使います。
4. 10桁以降の識別子を入力します。ドメイン名を逆にしたスタイルを推奨します。例えば、com.domainname.applicationname です。スイートやキーチェーンアクセスなしはワイルドカードを使って、例えば、 com.domainname.* 又は *。
iphone_20081001_15.png
5. 「Submit」をクリックします。
Development Provisioning Profileを生成する
provisioning profile はデジタル項目のコレクションで、開発者とデバイスを、許可されたiPhone開発チームに、ユニークに結びつけ、デバイスをテストで使えるようにする。Development Provisioning Profile は、アプリケーション・コードを走らせる、それぞれのデバイスにインストールされなければならない。
それぞれの Development Provisioning Profile は、iPhone Development Certificates,、Unique Device Identifiers 、 App ID を含んでいる。
ひとつのデバイスは複数の provisioning profilesをインストールすることができる。
1. ポータルの「Provisioning」セクションの「Development」タブで「Add Profile」をクリックする。
iphone_20081001_16.png
2. provisioning profile の名称を入力する
3. provisioning profileに関連づけするデバイスを指定する。
4. どのiPhone Development Certificatesが、 このprovisioning profileに関連づけするかを指定する。
5. このDevelopment Provisioning Profileに対する、ひとつのApp IDを指定する。 for the Development
6. 「Submit」をクリックする。
iphone_20081001_17.png
Development Provisioning Profileをインストールする
1. ポータルの‘Provisioning’ セクションの「Development」たぶで、必要なprovisioning profileの「download」ボタンをクリックする。 provisioning profileが表示されないときにはページをリロードしてみる。
2. Appleのドキュメントには、ダウンロードしたprovisioning profileを、Xcodeにドラッグしろと書いてあるが、これではできなかったので、オーガナイザーのprovisioning profileの追加のプラスボタン「+」で追加する。
iphone_20081001_19.png
開発しているアプリケーションをビルドしてインストールする
1. Xcodeを起動し、プロジェクトを開く
2. 左のメニューの「ターゲット」からプロジェクトをハイライトし、上部のメニューの「情報」をクリックする。
3. 「Build」タブを選び、「コード署名」の項目の、「コード署名 ID」の「Any iPhone OS Device」を「iPhone Developer: 名 姓」とする。姓と名は、iPhone開発許可における名前と同じである。コロンの後ろには半角スペースが入る。
4. 「コード署名プロビジョニングプロファイル」の項目で、ドロップダウンから、Xcodeに追加した、Development Provisioning Profile を選択する。(この項目はファームゥエア2.2の開発環境からなくなりました。最初は、どこかバグっているのかとかなり悩みました。)
iphone_20081001_21.png
5. プロジェクト・ウインドウに戻って、上部左端の「Device | Debug」のドロップダウンから「Device – iPhone OS(2.1)」を選択する。
6. 「ビルドして進行」をクリックしてアプリケーションをデバイスにインストールする。
iphone_capture_20081008_2.jpg

28 Comments

  • 動作まで、非常に参考にさせていただきました・・!
    自分のblogにまとめたのですが、
    現在ではちょっと違っている点?があるようで、
    (コード署名プロビジョニングプロファイルが無いなど)
    そこに気づくまで、かなりの時間をかけてしまいました・・。
    まだ敷居が高いですよね・・。

  • kさん、こんばんは。
    少しはお役に立てたようで、よかったです。
    プロビジョニングプロファイルが無くなったのは2.2からですね。私も非常に悩みました。ネットで検索しまくって、ないのが正常とわかるまで、結構時間を食いました。
    開発環境をアップするのは、リスクが高い気がします。今回も、2.2.1にいつアップするか迷っています。
    記事も少し修正したいと思います。ありがとうございました。

  • 登録、設定について参考にさせていただきました。
    Development Provisioning Profileのインストールまではうまくいって、
    iPhoneのプロファイルにも見えるのですが、
    サンプルのHellowWorldの実機への転送ができません。
    ビルドして進行をクリックすると、Code sign error等3個のエラーです。
    キーチェーンの設定は間違えていないと思いますが、
    まだまだ勉強不足なので敷居が高いです。
    何か原因が考えられるでしょうか?

  • rさん、こんばんは。
    ビルドだけならエラーは出ないですか?
    私も、設定は合っていてもエラーになったことがあります。その場合、ビルドのクリアを行ってから再ビルドする、あるいは、Xcodeを起動し直すとうまくいく場合があります。
    よろしかったらエラー内容を教えていただけますか?

  • rさん、一つ確認なのですが、Xcodeからオーガナイザーを開いて、接続しているiPhoneが正常で緑のマークがついていますか?iPhoneを接続し直したり、電源を入れ直すことは、今でもしょっちゅうやっています。

  • ありがとうございます。
    Xcode→オーガナイザ→DEVICESのiPhoneの右には緑の丸印が付いています。
    x-codeは3.1.3
    Device2.2.1です。
    ビルドして進行をクリックしても今も失敗ですので、
    やはり設定が間違えていると思われます。
    もしよろしければアドレスを入れていますので、
    直接メールをいただけないでしょうか?
    エラー画面をお送りできればと考えています。

  • 追記です。
    ビルド結果は下記の通りです。
    Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.HelloWorld’ could not be found

  • rさん、
    分かった気がします。Xcodeの「グループとファイル」のペインの「Resources」の下の、「HelloWorldーInfo.plist」のBundle identifiyerが「com.yourcompany.${PRODUCT=NAME:」とかとなっていないでしょうか?
    ここはAppleのAPPIDで仮に、「com.abc.*」とした場合、それに合わせて、「yourcompany」のところを「abc」に変更して保存しなければいけません。

  • ありがとうございます。
    まだ最初で実機へのサンプルインストール段階でしたので、
    単純にApp ID Nameは「test」、App IDは「*」とだけ入力しました。
    これでは良くないのであれば削除して登録し直したいのですが、
    Detailsをクリックしても削除ができません。
    初心者で申し訳ありませんが、よろしくお願いします。

  • rさん、「*」でしたら、plistの「com.yourcompany.」の部分を削除したらどうでしょうか?

  • Bundle identifierの「com.yourcompany.」を削除してみました。
    エラー内容が下記のようにちょっと変わりました。
    ‘HelloWorld’が見つからないのでしょうか?
    Code Sign error: a valid provisioning profile matching the application’s Identifier ‘HelloWorld’ could not be found

  • Xcodeのオーガナイザーの「Provisioning」のウインドウに、Profileは見えているでしょうか?
    かつ、ポータルの、「Provisioning」に表示されている、APPIDは、XXXXXXXXXX.*になっているでしょうか?

  • たびたび申し訳ございません。
    ポータルの、「Provisioning」に表示されている、APPIDは、WCJQ3JS8ZN.*となっています。
    これは後で入力の必要があるのでしょうか?
    Xcodeのオーガナイザーでは、DEVICEのProvisioningにダウンロードして追加したprovisioning profileが見えますが、
    IPHONE DEVELOPMENTのprovisioning profileには何も見えません。

  • APPIDは問題ないと思います。
    IPHONE DEVELOPMENT のprovisioning profileが表示されないのは、おかしいです。
    あまりいいアイディアは無いのですが、XcodeのオーガナイザーのDEVICEから、マイナスボタンで、profileを取り除いて、再度追加してみるくらいでしょうか?

  • Xcodeのオーガナイザーの▼DEVICE→自分のiPhone名→Summaryタブ↓Provisioningのウインドウに、Provisioningで作成、ダウンロードした「Develop(自分で名付けた)」は表示されます。
    ▼IPHONE DEVELOPMENT→provisioning profilesには何も見えません。
    iPhone本体の設定→一般→プロファイル→「Develop(自分で名付けた)」は表示されます。

  • ホームディレクトリ/ライブラリ/MobileDevice/Provisioning Profiles/のしたに、profileは存在しますか?なかったらコピーしてみてください。

  • おっしゃる通り存在します。
    インストールしようとしているサンプルのHellowWorldのバージョンや、
    キーチェーンの設定などでしょうか?
    「コード署名 ID」の「Any iPhone OS Device」の左の項目は自然にプルダウンから選べないので、
    「iPhone Developer: 名 姓」と手入力で良いのですよね。

  • 現在では、手入力は必要ないはずです。ドロップダウンに出てこない、またはグレーの文字で選択できないとすれば、問題ありと言うことです。ネットで検索してみてください。英語の情報も含めて。「iphone provisioning profile」でかなりの情報が出てきます。

  • たびたび失礼します。
    ▼IPHONE DEVELOPMENT→provisioning profilesは見えますが、
    その上にA valid signing identity matching profile could not found in keychain.と黄色いバックの上に文字があります。
    キーチェーンの設定がおかしいのでしょうか?

  • キーチェーンアクセスみたいですね。キーチェーンアクセスを開くと、「証明書」として、provisionongが見えますが、どうでしょうか?

  • rさんと同じ症状でここにたどり着きました。
    以下の操作でビルドができるようになりました。参考になれば幸いです。
    xcodeのオーガナイザ->IPHONE DEVELOPMENT->Provisioning Profiles
    で追加したプロファイルが表示されていると思いますが、このプロファイルを右クリック->Delete Profile で削除します。そして、ここが重要なんですが、PortalからDLしたプロファイルをさきほど項目があった場所にドラック&ドロップして追加します。これでxcodeの「コード署名 ID」の「Any iPhone OS Device」に期待する値が表示されました。
    たぶんオーガナイザのバグだと思いますが、DEVICESからiPhoneを選択して-(マイナス)ボタンでプロファイルを削除しても実際には削除されない場合があるようです。プロファイルに関してはオーガナイザ->IPHONE DEVELOPMENT->Provisioning Profilesで直接追加&削除をした方が確実であると感じました。

  • キーチェーンをインストールし直し、さすらいの猫様のコメントを参考に、
    やっとできました。
    何度も何度もコメントありがとうございました。
    コメントを入れても何も答えてくれなかったサイトもありました。
    心より感謝いたします。

  • rさん、解決してよかったですね。さすらいの猫さんのおかげですね。あまりお役に立てなくて申し訳なかったです。

  • さすらい猫さんの情報、助かりました!
    でもこの辺、どうもわかりにくいですね…。
    何はともあれよかったです。自分のアプリが実際のデバイスで動くのを見るのは感動ですね♪

  • 初めまして、starrrと言います。
    突然失礼します。
    実機にアプリを入れる事が出来ずにこのサイトに辿り着きました。
    二週間間にiPhoneアプリの本を購入した、超初心者です。
    例題を制作しいざ実機に入れる時に
    「供給された iPhone OS デバイスが接続されていません」
    と表記されます。
    他のサイトを見て、
    ①iPhoneやMacの再起動をした。
    ②キャッシュを空にした。
    ③開発用証明書も再度取得しました。
    が、直りません。
    他に何か原因は考えられるでしょうか?
    ちなみに
    Xcodeは、3.1.3です。
    iPhoneのosは3.0.1です。
    一つ引っかかるのが、
    オーガナイザでデバイスの横に黄色の丸が出ています。初めてMacを購入しましたが、普通は緑が正常ですよね?
    以前のコメントで緑ですか?ともありましたので。。。
    黄色から、緑にする方法はありますか?
    三日間ここに躓いています。
    宜しくお願いします。

  • starrrさん、
    私の場合は、iPhoneの電源の長押しでのパワーオフ、オンで回復しました。
    オーガナイザーの黄色の表示は正常ではありません。オーガナイザーでどんなメッセージが出ていますか?
    「開発をサポートしていない」等々。
    あと、iTunesでは正常に接続できていますか?

  • starrrさん
    ぼくも2週間前ぐらいからの初心者です。MACすら初めてです。
    本日、キーチェーンなどの作業をして、同じ現象が出ました。
    現時点でのXCODEはiPhoneの3.0.1に対応してません
    っていうか、ターミナルでリンクを張ります。
    やり方は、WEBのiPhoneDevCENTERにログインし、
    下段のiPhone OS 3.0.1 Advisoryに記載されてます。
    コマンドをこぴぺで、okです。よ。

  • 参考にさせて頂きました。
    ADCのサイトの細部(ボタンの名称など)が現状では変更されていたりしますが、
    Xcode3.2、SDK3.1、SnowLeopardでも実機テストまでこぎ着けることができました。
    もう少し、日本語の資料もAppleには頑張って頂きたいですね。
    ありがとうございました!