複数のプロジェクトでそれぞれ異なるXcodeのバージョンを利用していると、気づいたら想定と異なるバージョンで開発・ビルドしていた、といったバージョン取り違えの危険性がある
そのため、想定と異なるXcodeのバージョンでビルドしようとした場合エラーを吐き出し、取り違えを防ぐ方法を取り入れたので、以下にその手順を示す
本方法では、Xcodeのベータ版と正式版の違いも検知できる
手順
プロジェクトのトップディレクトリに、.xcode-version
ファイルを以下のように作成する
REQUIRED_XCODE_VERSION='11.0'
REQUIRED_XCODE_PRODUCT_BUILD_VERSION='11A420a'
上から順に、プロジェクトで利用するXcodeのバージョン番号とビルド番号を記述している
Xcodeのバージョン番号とビルド番号は、メニューの[Xcode] > [About Xcode]から確認できる
次に、XcodeでBuild Phases画面を開き、左上の[+]ボタンから[New Run Script Phase]を選択する
[Run Script]を展開し、スクリプト入力ボックスに以下を入力する
. $SCRIPT_INPUT_FILE_0
# バージョン表記を4桁左詰めゼロパディング形式に変換
REQUIRED_XCODE_VERSION_ACTUAL=`echo $REQUIRED_XCODE_VERSION | tr -d . | xargs printf '%-4d' | tr ' ' 0`
if [ $REQUIRED_XCODE_VERSION_ACTUAL != $XCODE_VERSION_ACTUAL ]; then
echo "error: Detected wrong Xcode version. Expected=$REQUIRED_XCODE_VERSION_ACTUAL, actual=$XCODE_VERSION_ACTUAL."
exit 1
fi
if [ $REQUIRED_XCODE_PRODUCT_BUILD_VERSION != $XCODE_PRODUCT_BUILD_VERSION ]; then
echo "error: Detected wrong Xcode build version. You might be using beta version. Expected=$REQUIRED_XCODE_PRODUCT_BUILD_VERSION, actual=$XCODE_PRODUCT_BUILD_VERSION."
exit 2
fi
[Input Files]に $(SRCROOT)/.xcode-version
を追加する
エラー出力例
Xcode 10.3を利用するプロジェクトを11.0でビルドしようとした場合
Xcode 11.0正式版を利用するプロジェクトを11.0 beta-8でビルドしようとした場合
運用
.xcode-version
はバージョン管理し、チームで共有するようにする
利用するXcodeのバージョンを上げる際は、.xcode-version
ファイル内の変数を変更する