古いprovisioning profileのエラーイックな残骸に気をつけよう

(以下XCode4.0.1での話です。以降のバージョンでは解決してるのかどうか知らんけど)
やあ子供たち元気にしてたかな?電車に乗ると暑くてたまらなかったりするよな。まるで蒸し風呂だからオフィスでの冷房は我慢するけど通勤時の冷房だけは許して欲しい感じだね。

さて今日は失敗談だ。iPhoneアプリであるTimeBlockや、次の第二弾iPhoneゲーム(制作順調だった)コードを間違って、

rm -rf *

したよ。MacOSXに限った話ではない訳だけれどもUNIXコンソールで間違ってこれをやったものに救いはないというのはもう常識だよな。
背景はこうだ。おじさんはソースコード管理にいつもgitをコンソールで使っていて、XCode4プロジェクトフォルダの中の.gitと.gitignore以外は全て消して、残ったこいつらだけをtgzに固めて日付つけて別ストレージに転送し保存するというのが自宅ソース管理手法だったわけなんだけれども、(まあ習慣ベースでなんとなくできたローカル運用だな)
この、.gitと.gitignore以外は全て消す、というところで、よく、rm -rf * を愛用していたんだね。ところが今日は、カレントがプロジェクトフォルダの中だと思っていつものように rm -rf * したらやけに時間がかかってなかなか帰ってこなかった。で終って確認してみると、カレントはプロジェクトフォルダの中ではなく、その一つ上の階層だったというわけだ。なので全プロジェクトが消えてしまった。
皮肉にもTimeBlockの方のtgzファイルの別ストレージへの転送は、3月17日以降はさぼってやってなかったので、、まあそういうわけだ。
これだけだと何もためにならない記事で終ってしまうが本題はこれからだ。
バックアップを解答復元させたプロジェクトをXCodeに読ませると、"provisioning profile XXXXXX can't be found"という門前払い的エラーでビルドが中断してしまう。これが納得いかず。
たしかに今日から3月17日へのタイムスリップだ。XCodeだって3から4になりたてだっただろうし、自分とこのprovisioning profile だって4月の更新をする前のものだったよ。
だがしかし、4月にちゃんと更新してるし、オーガナイザもそう伝えている状況にあって、そのエラーは納得いかんと。でググると多くの人が困っていて都市伝説的なソリューションの書き込みなんかで混乱をきわめている。
しかしその中でも光っていたのがここだ。これは、プロジェクトファイルを直接手で修正するソリューションだ。結論から言うとXCodeIDEのUI操作でのソリューションをおじさんが見つけることはできなかった。
そう、先のエラーで見つからんと言われているのは過去のプロファイル文字列(数十文字からなる英数字文字列)なのであって、それはオーガナイザの示している現在更新済みのものとは違う。つまり、プロジェクト情報のどこかに、過去のプロファイル文字列が埋まったままになっているのであろうというのが、本ソリューションの着目点だ。
それはずばり、「<プロジェクト名>.xcodeproj」フォルダの下にある、project.pbxproj ファイルの中に2カ所あった。ここに書いてあるふるいプロファイル文字列を新しいもので置換した後にXCodeにてビルドを試みてみると、見事にビルドが成功したのであった。
というわけで、やっと3月17日のコードにこんにちはだ。。orz