Xcode7でUnity4のプロジェクトのビルドに失敗するようになった対処

2015-10-09

Xcode7にしたからか?Unity4からiOSに出力したプロジェクトのビルドに失敗するようになってしまった。

- ipa build -s Unity-iPhone -c Release
xcodebuild Unity-iPhone.xcodeproj
2015-10-08 16:53:23.381 xcodebuild[66872:648312] [MT] PluginLoading: Required plug-in compatibility UUID 0420B86A-AA43-4792-9ED0-6FE0F2B16A13 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin' not present in DVTPlugInCompatibilityUUIDs

Xcode 5.1にupdateした後に、使えなくなったxcode plug-inを再び使えるようにする方法 - Qiita で挙げられているStackOverflowの回答を見たが、シンボリックリンクだからなのかわからないけどfindでなにも列挙されなくてうまくいかない。

$ ls -l ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
total 8
lrwxr-xr-x 1 hoge staff 93 10 8 17:56 Unity4XC.xcplugin -> /Applications/Unity/Unity.app/Contents/PlaybackEngines/iossupport/Tools/OSX/Unity4XC.xcplugin # symlink
$ ls ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin/Contents/
Info.plist MacOS # サブディレクトリにInfo.plistはある
$ find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist
# findでは見つからない

しょうがないので手動で修正を当てることにする。

追加すべきUUIDは

$ defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
0420B86A-AA43-4792-9ED0-6FE0F2B16A13

で確認できる。これを埋め込んだ

$ defaults write ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin/Contents/Info.plist DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`

で書き込まれるとのこと。ググッて出てくる記事で-array-addをつけてないことがよくあるんだが、それだとうまく動かなかった。(実行してしまうとテキストだった元ファイルが書き換えられてバイナリになってしまい元に戻せなくなるので注意)

確認は

$ defaults read ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin/Contents/Info.plist DVTPlugInCompatibilityUUIDs
(
...
...
"0420B86A-AA43-4792-9ED0-6FE0F2B16A13"
)

その後Xcodeを起動すると、そのプラグインはAppleに承認されてない、というダイアログが出るが、[Load Bundle]というボタンを選べばよい。