2013年6月5日水曜日

Xcodeで実機デバッグをするまでの手順(スクリーンショット付き)

iOS Developer Programにご登録の皆様こんにちは
スマホエンジニアのみかんです。



のっけから不自然な挨拶をかましましたがAppleの回しものではありませんよ。
どちらかと言えばiPodが発売されていた時代からAppleの掌の上で踊らされていた立場の人間でございます。


今回は備忘録的な意味も込めまして、Xcodeで実機デバッグをするまでの手順をまとめました。ただ、iOS Developer Programへ登録するくだりのスクリーンショットは撮ってませんので、登録が済んだ段階からの紹介となります。

大まかな手順は次の5つになります。

  • キーチェーンアクセスで証明書の要求を行う
  • Certificates,Identifiers & Profilesで証明書とかProfileを作る
  • キーチェーンアクセスに証明書を登録する
  • Xcodeを使って実機にアプリケーションを転送する
  • キーチェーンアクセスで証明書をバックアップする

それでは順番に見ていきたいと思います。
スクリーンショットの一部分が黒々としていますが、心眼など使わずにスルーして頂けると幸いです。

キーチェーンアクセスによる証明書要求書の作成


キーチェーンアクセスを起動します。
作業を始める前に、それぞれ何が入っているかを軽く見てみましょう。


「自分の証明書」です。特に何もやっていないMacならよくわからない証明書がひとつあるくらいですね。
ほっときましょう。


「鍵」です。公開鍵と秘密鍵のペアというやつですね。
ここにもさっきの証明書と紐付いたものがありますが、今回は関係ないです。


「証明書」です。ここには自分が作ったもの以外も含まれます。
まだ何もないのでさっきのやつだけが出ています。

パスワード、秘密メモは今回まったく関係ないので省きます。

では証明証要求のための設定を進めて行きましょう。

「キーチェーンアクセス」 > 「環境設定」を開いて、「証明書」タブを選択し「オンライン証明書状況プロトコル(OCSP)」と「証明書失効リスト(CRL)」を「切」にします。よくわかりませんが、公式サイトで推奨していた設定のようです。


さらに「キーチェーンアクセス」 > 「証明書アシスタント」 > 「認証局に証明書を要求...」を選択します。


証明書アシスタントが起動し、いくつかの設定を促されます。証明書情報では、「ユーザのメールアドレス」にiOS Developer Programで登録した時と同じものを、「通称」には適当な名前を入れて下さい。それがこの設定後生成される鍵ペアの名前になります。「CAのメールアドレス」は空です。「要求の処理」で、「ディスクに保存」と「鍵ペア情報を指定」にチェックを入れて下さい。「続ける」を押すとファイル保存のダイアログが開くので、適当な場所に保存してください。





次の鍵ペア情報では「鍵のサイズ」が2048ビットで「アルゴリズム」がRSAになっているのを確認して「続ける」を押してください。仕上げが行われ、鍵の生成と証明書要求書の生成が完了します。



鍵を見て確認してみましょう。


先ほど作ったものがあることがわかります。

キーチェーンアクセスでの作業はいったん終了です。次はこの要求書をもってAppleにお伺いを立てに行く流れになります。

Certificates,Identifiers & Profilesで各種手続き


Appleのメンバーセンターへアクセスしてログインしましょう。


iOS Provisioning Portalはどこへやら。
最近「Certificates,Identifiers & Profiles」として新しくなりました。さっそくそれに入っていきます。


iOS Appsの「Certificates」に入ります。


そうすると次のような画面が表示されます。

抜群のモダンっぷり

ここでサクサクと証明書を作っていきます。ではおもむろに右上の「+」ボタンをクリックしてください。「What type of certificate do you need?」という画面が出ます。


色々な種類がありますが今回は「iOS App Development」と「App Store and Ad Hoc」だけ作ります。開発用と配布用ですね。一度に両方は作れないので「iOS App Development」を選択して次へ進みます。


Certificate Signing Request(CSR,証明書要求ファイル)の作り方が書いてあります。さっき作ったので「Continue」しましょう。


CSRのアップロード画面です。ここで先ほど作成した証明書要求ファイルを選択して「Generate」を押します。


するとこのように、証明書が作成されダウンロードが可能になります。必要になるので「Download」しておきましょう。一応配布用も作りたいので、「Add Another」を押します。その操作は開発用とほぼ同じなのでスクリーンショットだけ掲載します。



終わったら同じようにダウンロードしておいて下さい。

「Certificates,Identifiers & Profiles」での操作を続けます。

画面左の「Identifiers」の「App IDs」を選択してください。


ここでアプリケーションのIDを登録します。右上の「+」ボタンから始めましょう。



まだ特定のアプリを作りたい!となっているわけではないので、どのようなアプリのデバッグにも使える便利なIDを登録します。「App ID Description」は「EveryThing」としましたが、別になんでもよいです。「App ID suffix」では「Wildcard App ID」を選択して「Bundle ID」に「*」を打っておいてください。




このような流れでIDの作成が可能です。

次は端末の登録ですが、ここは都合により省略します。




登録が完了しているとこのような画面になります。端末の登録は他とは違い、年間100台までという制限があるほか、一度登録すると無効にはできますが削除はできないようです。なのである程度慎重に端末を選ぶ必要があります。まぁ個人ならば100台も登録しないとは思いますが念のため。端末のUUIDは端末をMacにつないだ状態でiTunesやXcodeなどで確認できます。

いよいよProvisioning Profileの作成です。これを端末に入れることによって、実機でのデバッグが可能となります。画面左下の「Provisioning Profiles」から「All」を選択しましょう。



これまでと同じく、右上の「+」ボタンからファイルの追加を始めます。


Provisioning profileは開発用と配布用の2種類あります。配布用にはApp StoreとAd Hocがあり、リリース用とテスト配信用という感じで使い分けます。今回は開発用が欲しいので「iOS App Development」を選択して「Continue」します。

その後、「App ID」「certificates」「devices」とこれまで用意したものを選択していきます。




次の画面では、Profileの名前を指定します。ここではどれでも使える用のProfileを作っているのでApp IDと同じ「EveryThing」としました。


これで入力は終わりなので「Generate」を押します。生成が完了するとDownloadできる画面が表示されます。


「Download」は押さずにここでこの作業は終了して構いません。
生成が完了していると「Certificates,Identifier & Profiles」の「Provisioning Profiles」の画面でちゃんとProfileが作られていることが確認できます。



証明書の登録


さて、上記作業が終わった時点でMacには次の2つのファイルがダウンロードされている状態となります。


「ios_distribution.cer」と「ios_development.cer」です。開発用と配布用の証明書になります。Macではこれをキーチェーンアクセスで管理してくれますので、2つのファイルをそれぞれダブルクリックして登録しましょう。


キーチェーンアクセスの「自分の証明書」を見ると、次のようにダブルクリックした各証明書が登録されているのがわかります。証明書の横の三角アイコンをクリックすると、その証明書に紐付いている秘密鍵の情報も見ることができます。

このとき「この証明書は不明な機関によって署名されています」とありますが、今の時点でこれを気にする必要はありません。

とにかくこれでキーチェーンアクセスへの登録は完了しています。

次はいよいよXcodeでの作業に移ります。

Xcodeを使って実機にアプリケーションを転送する。


Xcodeを起動します。おそらく新しいプロジェクトを作りますか?的なウィンドウが表示されると思いますが、それは☓で消しちゃいましょう。まずは「Organizer」を開きます。画面左上のメニューの「Window」から「Organizer」を開きます。


ここで、画面右下の「Refresh」を押します! 何を更新するの?という感じですが、ここではApple IDに紐付いた最新のProvisioning Profileなどの情報を持ってきます。ですので「Refresh」を押すと初回は次のようなログインダイアログが出ますので、iOS Developer Programを購入したApple IDの情報を入力します。


ログインすると各種情報のダウンロードが始まります。画面左側の「LIBRARY」の「Provisioning Profiles」を選択すると、先ほど作成した「EveryThing」というProfileが表示されていることがわかります。


「status」が「Valid profile」になっていますね。こうなっていればこのProfileが有効になっているということです。Macに入っている証明書などに問題があったりすると、ここが赤くなったりしているので、ちゃんと対応している秘密鍵が入っているかなどの確認が必要になります。

ここまできたらXcodeの準備も整っています!
早速適当なサンプルプロジェクトを作って実機にインストールしてみましょう!

Xcodeのメニューから「File」>「New」>「Project」と選んで新しくプロジェクトを作っていきます。


画像では「Single View Application」を選んでいますが、これは興味のあるもので構いません。


プロジェクトの情報を入力しています。試すだけならばほとんど適当に入力してOKです。
プロジェクトができあがったら、端末をXcodeに繋いでおもむろに「Run」しましょう。実行するときには「Run」のボタンの右側にあるボタンで端末名が選択されているかどうか確認してください。

問題なく実行されたはずです!

そのままの状態で「Organizer」で端末のスクリーンショット確認するとこうなっているかなと思います。


実行と同時に、「端末名」>「Provisioning Profiles」には「EveryThing」なProfileが入っていることが確認できます。配布する時は別ですが、端末を実機に繋いで実行した場合は選択しているProfileが自動的に端末に入るようになっています。


これでひと通り終わりましたが、この時点で「Certificates,Identifiers & Profiles」とキーチェーンアクセスに変化があります。まずは「Certificates,Identifiers & Profiles」を確認してみましょう。


「Provisioning Profiles」に「iOS Team Provisioning Profile:*」というものが増えていて、「status」に「Active (Managed by Xcode)」とあります。これは先程XcodeでRefleshした際に気を利かせて自動的に作ってくれたものになります。役割的には「EveryThing」と同じです。どのApp IDのアプリでも使えるよというアレですね。
自分は他の人のProfileと同じ名前で混ざってしまうのが困るので、今回のようにわざわざ別名で作ったりしています。

次にキーチェーンアクセスを開いてみます。

証明書を登録した時に「この証明書は不明な機関によって署名されています」となっていた部分が「この証明書は有効です」に変わっています。


なぜなのでしょうか。これは署名した機関の情報も、XcodeでRefleshした時にダウンロードされキーチェーンアクセスに登録されているからです。それは「証明書」欄で確認できます。


「Developer ID Certification Authority」と「Apple Worldwide Developer Relations Certification Authority」というものが増えています。これが今回利用した署名機関ということですね。そこまで意識する必要のないネタですが、知らぬ間にファイルが登録されていたりすると気持ち悪い!なんて方は知っておいて損はないかと思います。

証明書のバックアップ


さて、面倒な作業を終え実機での実行も確認してあとはアプリ開発に勤しむのみ!としたいところですがまだ一つやるべきことが残っています。それは証明書情報のバックアップです。

というのも、2台目以降のMacで開発を行うためには、この1台目で生成した秘密鍵情報がないといけないからです。「Certificates,Identifiers & Profiles」から.cerな証明書ファイルをダウンロードしてきても、キーチェンアクセスに「その証明書に対応する秘密鍵ないから認められないね!」という態度を取られてしまいます。
ですので1台目がクラッシュしてしまうと開発する手段が無くなってしまうのです。
(今回の手順を既にある証明書を消去した上でやり直せばできることはできるのですが、すでに作成したProvisioningProfileなどがオジャンになってしまうのでやはりダメージはあります)

そういうことなので早速バックアップを行なっていきましょう。
キーチェーンアクセスで証明書ファイルを右クリックして「"証明書名"を書き出す..」を選択します。


その後の保存ダイアログでは「個人情報交換(p12)」を選んでください。
それと名前はその証明書だとわかるような名前をつけておくと管理が楽かもしれません。
すると「書きだした項目を保護するために使用するパスワードを入力」と出ます。
大切なファイルなのでちゃんとパスワードを入れておくと良いと思います。


出力された.p12ファイルはしっかりと管理しておきましょう。2台目以降のMacでこれをダブルクリックすれば、諸々の情報がキーチェーンアクセスに登録されます。開発用、配布用とこのMacで作成した証明書は全てこの方法でバックアップを取っておきましょう。


おわりに

いかがでしたでしょうか。一息に紹介してしまうとやはり長くなってしまいますね。これが少しでも皆様のお役に立てれば幸いです。今後も今回のようにWebのUIが変更になったりする可能性があるので、各stepで何を目的として作業しているのかを抑えておくと混乱せずに済むかなぁと思います。





1 件のコメント:

  1. この情報のお陰で無事実機テストできました!
    今後も楽しみに拝見しますね(^o^)/

    返信削除