iPodTouchで自作ソフトをインストールする方法

ppc2009-09-12

参考
KW:ipod touch certification
http://gihyo.jp/dev/serial/01/iphone/0009?page=2
http://d.hatena.ne.jp/thata/20090508/1241773907
http://gihyo.jp/dev/serial/01/iphone/0001
http://gihyo.jp/dev/serial/01/iphone/0008
http://developer.apple.com/iphone/index.action
159093

1.iPhone Developer Programへの登

2.Xcodeに接続とDevice IDの確認
オーガナイザへの実機の登録と、実機のデバイスIDの確認を行う。
オーガナイザを起動
Xcodeのメニューから「ウインドウ」→「オーガナイザ」
実機をMacと接続する
Use for Developmentボタンを押す→オーガナイザへデバイスを登録
Deveice UDIDを確認 コピペしておく。

3.証明書要求の作成
アプリケーションから「ユーティリティ」→「キーチェーンアクセス」を起動
メニューの「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求...」を選択
証明書情報の「ユーザのメールアドレス」はiPhone Developer Programへ登録したメールアドレスを指定
「コモンネーム」も同様にiPhone Developer Programへ登録したメールアドレスを指定
「要求の処理」は、「ディスクに保存」と「鍵ペア情報を指定」を選択
鍵ペア情報で「鍵のサイズ」に「2048ビット」、「アルゴリズム」に「RSA」を指定する
証明書要求が作成される
設定ファイルの作成とダウンロード

次はiPhone Developer Program Portal上で以下の作業を行います。
コードへ署名するための証明書のダウンロードとインストール
実機のデバイスIDを登録
App IDを登録
証明書、デバイスID、AppIDをもとに作成した「プロビジョニング」のダウンロード 。

まずは iPhone Developer Program Portalをひらきます。
http://developer.apple.com/iphone/manage/overview/index.action をブラウザでひらく
証明書要求を登録
Portalの左ペーンから「Certificates」を選択
空っぽのYour Certificateの中にある「Request Certificate」を押す
先ほど作成した証明書要求を選択して「Submit」を押す
Your Certificateの中に選択した証明書要求が表示されるので、さらに「Approve」を押す
証明書の発行待ちに入るので、数秒待ってからリロードする
「Download」ボタンが表示されるので、それを押して「developer_identity.cer」をダウンロードしてくる
「Your Certificate」の下にある「WWDR intermediate certificate」も合わせてダウンロードしておく
ダウンロードした2つの証明書をダブルクリックで開いて「証明書の追加」を行う
キーチェーンがよくわかってないんだけど、「ログイン」と「システム」のどちらに登録すればいいんだ?
ログインユーザにひもづくのが「ログイン」、ログインユーザにひもづかないのが「システム」って感じかしら。とりあえずは「ログイン」で登録してみた。
バイスの登録
Portalの左ペーンから「Devices」を選択
右上の「Add Device」ボタンを押す
バイス名に「t_hatakeyama_iPodTouch」、デバイスIDは先ほどメモったものを入力して「Submit」ボタンを押す

5.App IDの作成
App IDってなに>
App ID How Toによると以下のようなものとのこと。納得。
An App ID is a unique identifier that iPhone OS uses to allows your application to connect to the Apple Push Notification service, share keychain data between applications, and communicate with external hardware accessories you wish to pair your iPhone OS application with. In order to install your application on an iPhone OS based device, you will need to create an App ID.

Portalの左ペーンから「App IDs」を選択
右上の「Add ID」ボタンを押す
「App ID Name」へ「thatakeyama(アプリ名を入れるらしいのだけど、とりあえずは適当な名前で)」、「App ID」へは「com.chikuwaprog.*」的なものを入力して「Submit」ボタンを押す
App IDリストに登録されていること、App IDが「##########.com.chikuwaprog.*」的なものになっていることを確認

6.Provisioning Profileの作成
次はProvisioning Profileの作成。ここで作成したファイルをiPhoneバイスへ登録することで自作アプリをインストールできるようになるとのこと。
Portalの左ペーンから「Provisioning」を選択
右上の「Add Profile」ボタンを押す
「Profile Name」へは「thatakeyama Development Provisioning Profile(ここではApp IDと同様に適当な名前を入力)」、「Certificates」「App ID」「Devices」はそれぞれ先ほど登録したものを選択して「Submit」ボタンを押す
登録してすぐはプロファイル作成中のステータスになっているので少し待ってからリロードしてみる
リロードして「ダウンロード」ボタンが表示されたら、そこからプロファイルをダウンロードする
プロビジョニングのインストールと設定
Program Portalでの作業はここまでで終了。次はオーガナイザへ戻ってさきほどダウンロードしたプロビジョニングを実機へインストールする。

プロビジョニングのインストール
「DEVICES」から自分のデバイスを選択
「Provisioning」の「+」ボタンを押してプロビジョニングを選択
これでプロビジョニングのインストールは完了。

プロジェクトの設定
次はインストールしたアプリケーションのプロジェクトファイルを開き、プロビジョニングなどの設定を行う。
アプリケーションは先日作成したHello Worldアプリを使用する。
Xcodeのメニューから「プロジェクト」→「プロジェクト設定を編集」を選択
「ビルド」タブを選択
「Code Signing」→「コード署名ID」で、「Any iPhone OS Device」の値に先ほどインストールしたプロビジョニングを設定
Xcodeのメニューから「プロジェクト」→「アクティブSDKを設定」→「Device iPhone OS X.X.X」を選択
「ビルドして進行」ボタンを押す
「codesignは、キーチェーンに含まれるキー"Takashi HATAKEYAMA"を使用して署名しようとしています。」と出てくるので「許可」を押す(「常に許可」でもいいのかも)
Your mobile device has encountered an unexpected error (0xE800003A)
というエラーが出た><
きっとApp IDを設定していないのが原因なはずなので

http://d.hatena.ne.jp/It_lives_vainly/20090204/1233741543
を参考にしてinfo.plist の "Bundle Identifire" に、App ID で指定した文字列を設定してみる。
プロジェクトの中からinfo.plistを開き...
「Bundle Identifiler」を以下のように書き換える
「com.yourcompany.${PRODUCT_NAME:identifier}」→「com.chikuwaprog.${PRODUCT_NAME:identifier}」
ダメだった><
(付録)ここまでやってもダメな場合
※通常はここまでやれば正しく動くはず。なぜだかうまくインストールできない場合には以下を行ってみてください。
info.plistのBundle Identifierを正しくセットしても動かなかったので、最後の手段として以下のサイトを参考にしてプロジェクトのクリーニングを行ってみた。
http://akisute.com/2009/03/your-mobile-device-has-encountered.html
Xcodeのメニューから「ビルド」→「クリーニング」を選択
これを試したところ無事に実機にインストールすることができました!実機で動かす前に一度iPhone師ミュレータ向けにビルドしていたのが悪かったのかしら。