iPhoneの実機でプログラムを動かす
by K.I
2014/01/xx〜
Index
- iPhoneの実機でプログラムを動かしてみたいということで、いろいろ調べてみた。
- 実機で動かすためには、意外と面倒な手順が必要なので、メモしておく。
- 自分の場合は、実はiPhoneは持っていなくて、iPod touchとiPadだが
- 基本的に開発用での登録の手順になっている。
- Apple Storeに登録する場合は、開発者の署名をApp Store用にして、AppIDをユニークなものにすれば良いと思う。
- iPhone等のデバイスで実際にプログラムを動かすために必要なもの
- iOS Developer Programのライセンス(1年間有効)の購入、
- 開発用証明書を作成、テスト用デバイス登録、AppIDの取得が必要になる
- 開発途中のプログラムであっても、プログラムの開発者、プログラムを実行するデバイスが制限されているので、
- プログラムの改変や不正な配布が出来ないようにするためのものらしい。
- Mac
- iOSデバイスのプログラム開発には、Intel系のMacが必要
- 自分の場合は、MacMini を使用
- iPhone、或いはiPod touch, iPad等
- 開発用証明書は、プログラムの開発者の署名みたいなもの
- 予め、開発者はApple Developerとして登録しておく必要がある。
- 開発者用のAppleIDは、ユーザーとしてのApoleIDとは別に取った方が良い1と思う
- アプリケーション→ユーティリティの中の、キーチェーンアクセス.appを起動
- キーチェーンアクセス→環境設定を選択、
- キーチェーンアクセス→証明書アシスタント→認証局に証明書を要求...を選択、証明書アシスタントで、
- 証明書情報:ユーザーのメールアドレス、通称を指定、CAは指定しないで、ディスクに保存、鍵ペア情報を指定にチェックして続ける
- デフォルトの名前のまま、保存する
- 鍵ペア情報:2048ビット、RSAを選択して続ける
- ブラウザで、 IOS_Dev_CenterにLoginして、右側にあるCertificates,Identifiers & Profilesをクリック
- iOS Appsの、Certificatesをクリック、Request Certificates Manuallyの"Certificate Signing Request"のリンクをクリック
- Developmentで、iOS App Developmentをチェック
- Productionで、App Store and Ad Hocをチェックして、Continue
- Create a CSR fileの説明が出るので、Continue
- Upload CSR fileの、Choose File...で、先程作成しておいたCSRファイルを選択して、Generateをクリック
- Your certificate is ready.と表示され、Downloadボタンを押す
- ダウンロードした証明書ファイルを開くと、キーチェーンに追加して良いか聞いてくるので、追加する。
- キーチェーンアクセスを起動して、証明書を見ると、iPhone Distribution: xxxx xxxx という証明書が追加されている
- 証明書を選択して、書き出す。(拡張子.p12)この時、キーチェーンはLoginを選択しておく
- さらに、パスワードを設定すると、ファイルが保存される。
- テスト用のデバイスを、USBケーブル2で接続して、iTunesを起動する
- 表示→サイドバーを表示して、デバイスを選択すると、デバイスの概要が表示される
- シリアル番号の項目をクリックすると、識別子(UDID)の表示に切り替わるので、そのまま編集→コピーする
- ブラウザで、 IOS_Dev_CenterにLoginして、右側にあるCertificates,Identifiers & Profilesをクリック
- iOS Appsの、Deviceをクリック、Register Devices Manuallyの"manually register devices."のリンクをクリック
- Register Deviceをチェックして、Name:に適当な名前を設定して、UDIDに先程コピーしたIDをペーストして、Continue
- Review and registerで、登録する内容が表示されるので、Registerをクリック
- Registration completeとなり、登録が完了
- 作成するアプリケーションのIDを取得する
- AppIDは、作成するアプリケーション毎に必要になるが、変更や削除が難しい(出来ない?)ので注意
- プログラムのテスト用ならば、App ID Suffixにワイルドカードを使って、プログラム名を変更して使いまわした方が良い
- ブラウザで、 IOS_Dev_CenterにLoginして、右側にあるCertificates,Identifiers & Profilesをクリック
- iOS Appsの、Provisioning Profilesをクリック、Generate Provisioning Profiles Manuallyの"manually generate profiles."のリンクをクリック
- iOS App Developmentを選択して、Continue
- Select App IDで、Create App IDボタンを押す
- App ID Description Name: 説明とかアプリケーションの名前
- App ID Prefix Value: zzzzz(Team ID) →これは固定されていて変更出来ない
- App ID Suffix Wildcard App IDを選択、例えば Bundle ID: ccc.bbb.aaa.* に設定3 → wildcardの場合、*部分は変更可能
- App Services Enable Servicesで、とりあえず選択できるもの全部選択して、Continue
- Confirmが表示されるので、確認してSubmitすると、Registration Completeとなる
- Provisioning Profileというのは、これまでに用意した、アプリケーションのIDと、開発者、そして実行するデバイスを関連付けるもの
- 実機用にコンパイルする場合には、この情報が必要となる。
- ブラウザで、 IOS_Dev_CenterにLoginして、右側にあるCertificates,Identifiers & Profilesをクリック
- iOS Appsの、Provisioning Profilesをクリック、Generate Provisioning Profiles Manuallyの"manually generate profiles."のリンクをクリック
- Distributionの、App StoreとAd Hocが選択出来るが、とりあえず開発用ということでAd Hocを選択してContinue
- Select App IDで、作成しておいたAppIDを選択して、Continue
- Select certificatesで、登録されている名前を選択して、Continue
- Select devicesで、登録されているデバイスを選択して、Continue
- Name this profile and generateで、ProfileNameを適当に設定して、Generate
- Provisioning Profileが生成されるので、Downloadする
- ダウンロードしたxxxxx.mobileprovisionファイルを開くと、Xcodeが起動して
- Organizer - Devicesタブが開いて、iPod touchのProvisioning Profilesとして、登録した内容が表示される
- 登録しておいたデバイスが接続された状態だと、そのままインストールされるらしい。
- Window→Organizerの、DevicesタブでProfileに緑色のインジケータがついていることを確認する
- Provisioning Profileを取得したら、いよいよプログラムを実機で実行可能となる。
- ProjectファイルのCompany Identifierの設定が、App ID Suffixと一致している必要がある。
- 例えば、登録したAppIDの App ID Suffixが、 ccc.bbb.aaa.* の時は、
- Projectファイルの Company Identifierを、ccc.bbb.aaa.xxxx のように設定4する
- デバイスをUSBケーブルで接続したら、Provisioning Profileの設定を再確認しておく
- Window→Organizerの、Devicesタブで接続しているデバイスに緑色のインジケータがついていることを確認
- ついでに、provisioning Profilesの、App Identifierをチェック
- さらに、Applicationsに設定されているプロジェクト名もチェック
- 実行ボタンの右の"Set the active scheme"で、
- iPhoneシミュレータの代わりに、実際のデバイスを設定する。
- 最初の1回だけ、チーム名の選択のDialogが出るので、選択してChooseボタンを押す
- これで、実行ボタンを押すと、デバイスにプログラムがダウンロードされ、実行される。
- デバイスがロックされている場合は、ロックを外す必要がある
- 一度出来れば、簡単だけど、ここまでくるのは結構面倒だったなぁ。。
1登録時のユーザ情報は、日本語を使わないようにする。
2純正ケーブルじゃないと、認識されないことがあるみたいだ。
3URLを逆に設定することが推奨されているらしい。
4この設定は、info.plistのBundle Identifierで、後から設定しなおすことも出来る。
[top]
Xcode cannot run using the selected device
- 最初、Provisioning Profileの設定がうまく行かない状態だったので、
- Provisioning Profileの設定がうまく行ってから、
- 実行ボタンの右の"Set the active scheme"で、改めて実際のデバイスを設定する。
The password supplied for the account
"xxxxx@xxxx.com" was rejected.
Open Accounts OK
- アカウント名が、違うものが設定されていた。
- Open Accountsで設定画面を出して、アカウントを消して、正しいアカウントを再設定した
No matching code signing identity found
- Fix Issueボタンを押して、しばらくすると、以下のメッセージ
Generation of the team provisioning
profile for AppID 'xxxxxxxxxx' is still
pending. Please wait a moment and then
click the Refresh button in the Details
section of the Accounts tab for this team.
- 2つのエラーも出ている
- Code Signing Error
- Dependency Analysis Error
- これは、AppIDが一致しないということらしい。
- まず、登録されているデバイスがちゃんと接続されていることを確認
- AppIDの設定があっているかどうか確認(例えば、登録したAppIDが、ccc.bbb.aaa.* だった場合)
- xxxx-info.plistの、Bundle Identifierが、ccc.bbb.aaa.${PRODUCT_NAME:xxxxx} であること
- Organizer - Devicesタブで、Provisioning ProfileszのApp Identifierが、zzzzz.ccc.bbb.aaa.* であること
- 違う場合は、info.plistのBundle Identifierを修正する
- Application名とプロジェクト名をチェック
- Organizer - Devicesタブで、Applications の名前が、Project名と同じことを確認
- 一致しない場合は、一旦Applicationの設定を消して、再度実行してみる
- Project Navigatorで、xxxx-info.plistを選択、File inspecterで、TargetMembershipでプログラム名が選択されているかチェック
- 実機にプログラムをダウンロードしていたら、画面が真っ黒になって、どのボタンを押しても変化がない状態に
- Macに接続すると認識するので、動いているが画面が全く表示されない様だ。
- Homeボタンとスリープボタンを同時に長押しして再起動する
- アップルマークが表示されるまで、かなり長く(10秒以上?)押し続ける必要がある。
[top]
[top]
[プログラムの部屋に戻る]