前提
- Cocoa framework は、property list のformat にold-style(ASCII) とXML を許容している
- XCode が生成するpbxproj ファイルは、old-style で書きだされる
- CocoaPods が生成するpbxproj ファイルは、XML で書き出される
- old-style plist が Official API が使えなくなったのが理由らしい: https://github.com/CocoaPods/CocoaPods/issues/1275
課題
- pod install/update するとpbxproj ファイルがXML 形式に変換されてしまうので、うっかりファイルの追加/削除 をしていたコミットとコンフリクトすると、正しくマージできなくなってしまう
- 特にファイル構成に変更がなくても差分がどっさり出てきてしまう(ように見える) ので、嫌な気持ちになる
解決策
- xcproj というCLI のコマンドを入れておく
brew install xcproj
- そうすると、CocoaPods がxcproj のコマンドを認識して、old-style にconvert してくれる
注意点
- xcproj は、Xcode をアップデートするたびにre-compile する必要がある
- brew uninstall してinstall すればok
brew uninstall xcproj
brew install xcproj
おまけ
- brew install xcproj しようとしたら、こけた。
$ brew install xcproj
==> Downloading https://github.com/0xced/xcproj/archive/0.1.2.tar.gz
Already downloaded: /Library/Caches/Homebrew/xcproj-0.1.2.tar.gz
==> xcodebuild -project xcproj.xcodeproj -scheme xcproj SYMROOT=build DSTROOT=/usr/local/Cellar/xcproj/0.1.2 INSTALL_PATH=/bin -verbose install
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
- 理由は、Xcode5 と6 を共存させていて、アプリケーションの名前をXcode => Xcode6 に変更していたから。名前を元に戻したら通った。