Xcodeでのビルド時にInterface Builderファイルを更新する
Interface Builderファイルにはバージョンが含まれる
Interface Builderで編集するXib/StoryboardファイルにはXcodeのバージョンが含まれているため、Xcodeをアップデートして開くと差分が出てしまう。
こうした差分はレビューの邪魔になるのでビルド時に全ファイルをXcode付属のibtoolで更新するようにしてみる。
ビルド時に全更新するコマンドを実行する
-
Homebrewでxmlstarletをインストールしておく。XMLファイルの内容を読み取るのに使用する。
brew install xmlstarlet
-
実行したいTargetのBuild PhasesでRun Scriptを追加し、下記のスクリプトを実行させる。
if ! which xml >/dev/null; then echo "warning: xmlstarlet does not exist, do brew install xmlstarlet" exit fi tools_version=$(ibtool --version | xml sel -t -v "//dict/dict/key[text()='bundle-version']/following::string[1]" 2>/dev/null) system_version=$(sw_vers -buildVersion) find . -name "*.storyboard" -or -name "*.xib" | while read filename do if [ "$(xml sel -t -v '//document/@toolsVersion' $filename)" -eq "$tools_version" ]; then continue fi if [ "$(xml sel -t -v '//document/@systemVersion' $filename)" -eq "$system_version" ]; then continue fi echo "Upgrade $filename" xcrun ibtool --upgrade $filename --write $filename done