トップページへ戻る
つくれる?iPhoneアプリ
cocos2dを使ったiPhoneアプリ制作を解説してみる

その1

お気に入り(IE)
はてなブックマーク
yahoo!ブックマーク
del.icio.us
livedoorクリップ

どのページでも
ご自由にリンクしてください。

感想ご要望はお気軽に!
info@taskinteractive.com


■順番に解説
・導入
その1
導入


その2
HelloWorld


その3
わからない単語でも安心


その4
いじるファイルと画面構成


その5
ソースにある単語を手探る


その6
実行の順を追って手探る


その7
クラスの名前と素性を手探る


・サンプル1
その8 ボール遊び1
Scene/Layer/Sprite


その9 ボール遊び2
ファイル名を変えてみる


その10 ボール遊び3
ソースをいじってみる



■項目ごとに解説
クラスの解説
その1 クラスって何?


クラスの解説
その2 インスタンスって何?


クラスの解説
その3 オブジェクト指向って何?



クラスの解説
キリッと クラスの書式1




cocos2d HelloWorldScene
cocos2dデフォルトのサンプルを解説


企画・販売元タスクインタラクティブ


プロビジョニングファイルのエラー

実機でテストするとき、陥りがちな落とし穴があります。
このプロビジョニングファイルでエラーが起きはじめると、解決策が見出せないままどんどん時間だけが過ぎていってしまいます。

今までいろいろなエラーが発生し、いろいろ試してみましたが、もう絶対に復旧しないのではないかと思われるエラーもありました。

そんなエラーをまとめてみました。



復旧しにくいもの

○エラーの発生前後で、下記を変更しているもの。
 ・開発用mac
 ・開発用macのOS
 ・キーチェーンアクセス上のキーペア(認証局に請求したもの)
 ・iPhone Developerの証明書

上記の場合、証明書セットの再構築とプロビジョニングファイルの再インストール、プロジェクトのクリーンアップと再設定を行っても、『Command /usr/bin/codesign faild with exit code 1』エラーで前に進まないことが多くありました。


この場合、あきらめて新しいプロジェクトをテンプレートから作成しなおしています。
良い解決法がある方は教えてください・・・



復旧しやすいもの

○プロビジョニングファイルを生成した元になった App ID に登録した『Bandle Identifier(App ID Suffix)』と、プロジェクトにあるinfo.plist 上の『Bandle Identifier』の設定が合致していない。

Code Sign error: Provisioning profile '[プロファイル名]' specifies
the Application Identifier '[App ID 作成時に設定したBandle Identifier]' which dosn't match the current setting '[プロジェクトに設定された Bandle Identifier]'

ここで注意しなければならないのは、下記の事です。

・Bandle Identifier ソフトウェアに割り振るユニークなID

これは、世界中の誰が作ったソフトウェアともかぶってはいけません。
なので、Appleでは、このIDの頭に、自分の会社のドメインをリバースで設定することを推奨しています。


このサイトを例にすると、『jp.tusk』です。これであれば他人とかぶることはありません。
そして、その会社の中でもかぶらないように、一意のIDに設定する必要があります。


例えば、 jp.tusk.testCocosAp1 というような感じのIDをソフトウェアに割り振ります。



すべてのソフトウェアに対して、ひとつひとつApp ID と provisioning file を割り当てることも出来ます。
上記で言えば、App ID を生成するときの『Bandle Identifier(App ID Suffix)』をjp.tusk.testCocosAp1にして、そのApp ID に紐づいたprovisioning file を生成してダウンロード、インストールすればいいのです。

が、これは現実的ではないので、『Bandle Identifier(App ID Suffix)』を設定するとき、ワイルドカードが使えるようになっています。

なので、iPhone developer connection で App ID を生成するとき、
『Bandle Identifier(App ID Suffix)』 を、『jp.tusk.*』と設定して、それを元にプロビジョニングファイルを作るわけです。
そうすることにより、ソフトウェアのIDが、
『jp.tusk.testCocosAp1』でも『jp.tusk.newGame』でも大丈夫になるわけです。




では、『info.plist』上の『Bandle Identifier』に設定する、

jp.tusk.jp.${PRODUCT_NAME:identifier}

これはどういうことかというと、${PRODUCT_NAME:identifier} この部分に勝手にプロジェクトで設定したプロダクトネームが当て込まれてくれるので、いちいち設定する手間が省ける、ということです。

なので、プロジェクトごとに『info.plist』上の『Bandle Identifier』を手動で変更してもいいですし、上記のような変数の置換子を置いてもいいのです。







○端末にプロビジョニングファイルが転送されていない

オーガナイザを確認して、Provisioning にプロビジョニングファイルが転送されているか確認しましょう。

端末の接続をオーガナイザで確認して、ダウンロードしたプロビジョニングファイルをダブルクリックすれば解決します。







○Xcodeがプロビジョニングファイルを見つけられない

Code Sign error:Provisioning profile '****************************' can't found


このエラーが出たときは、Xcodeがビルドの際に見に行くプロビジョニングファイルの保管先を確認しましょう。
通常は、 /Users/[ユーザー名]/Library/MobileDevice/Provisioning Profiles にあります。
例えばmac上で作業しているユーザー名が takashi だとすると、

/Users/takashi/Library/MobileDevice/Provisioning Profiles

です。
作業指定ユーザーが自分のホームディレクトリ下のディレクトリを確認する場合(通常の環境ですね)は、
~/Library/MobileDevice/Provisioning Profiles こんな感じでOKです。

コンソールによっては、ディレクトリ名の空白にバックスラッシュが付くため、
~/Library/MobileDevice/Provisioning\ Profiles こんな表示かもしれません。


この場合もプロビジョニングファイルをダブルクリックすれば、Xcodeが自動的にそのディレクトリにファイルをコピーして管理してくれるため、復旧させることができます。