2011年2月10日木曜日

xcode iPhone 共同開発プロジェクト 実機でコンパイル時によく起きる シンボルのリンクエラーの対処法



iPhoneプロジェクトをsubversion管理などを行って共同開発をする際にsubversion管理から


外すべきファイルは次のファイルだけど、これを管理から外してもどうしても


たまーにおこってしまうエラーがあったので、その対処法をメモ

<管理下から外すべきファイル>
*.pbxuser
*.perspectivev3
build/




もう一点注意すべきところは、プロジェクトフォルダ以下の


~.xdoceproj/project.pbxproj」 ファイルが、コンフリクトを起こさないようにすること。


このファイルは、プロジェクトで使用する、画像や、ライブラリなどをプロジェクトに追加した際に、


ファイル構成やどこにどのファイルがあるかを記録するファイルで、


おそらく、このファイルをもとにxcodeプロジェクトを開始し、コンパイル時に参照していると思われる。




実機でコンパイルする際、リポジトリから落としてきたプロジェクトは、コピーしたプロジェクトは、設定にもよるけど




このproject.bpxprojファイルがコピーもとで最後にコンパイルした時に指定していた場所から




ライブラリやframeworkを参照しようとするので、その設定と違う環境でコンパイルしよーとすると




参照できなくなりシンボルのリンクエラーになってしまうらしい。


※例えば、コピー元で最後にシュミレーターでコンパイルしたらあとに、コピー先で実機でやろうとすると、シンボルリンクエラーになる。(一概にそうとも言えないカモ。。。)実機でコンパイルしたいのに、参照先がシュミレーターになっているなど


その場合のエラーは、大体、すごい量になる。プロジェクトに使用しているファイルが多ければ多いほど多い。僕の場合は、「424カ所」だった、それと同時にワーニングで、指定しているパスが参照できません的なワーニングがでたので気がついた。




まーとにかく、細かいことは気にしないで、大量のエラーが急に出てきたら下記を試してみるといいです。





下記のファイルをエディタなどで開く

プロジェクトファイル/*.git.xcodeproj/project.pbxproj


• 各frameworkやライブラリの参照先を確認して変更
vi などで開いているときは、このコマンドで一発置換
%s/Simulator//g

• 反映
xcodeに戻ろうとするとディスクから読み取るかどうか聞かれるので、「ディスクから読み取り」を選択する


もしくは、逆。シュミレーターでやろうとしているのに、実機側から参照しようとしている場合は、Simulatorを追加してあげる。


これで、コンパイルすれば、正常にできるはず!





0 件のコメント:

コメントを投稿