LoginSignup
23
11

More than 3 years have passed since last update.

Xcodeバージョンをビルド時に厳密にチェックする

Posted at

複数のプロジェクトでそれぞれ異なるXcodeのバージョンを利用していると、気づいたら想定と異なるバージョンで開発・ビルドしていた、といったバージョン取り違えの危険性がある
そのため、想定と異なるXcodeのバージョンでビルドしようとした場合エラーを吐き出し、取り違えを防ぐ方法を取り入れたので、以下にその手順を示す
本方法では、Xcodeのベータ版と正式版の違いも検知できる

手順

プロジェクトのトップディレクトリに、.xcode-versionファイルを以下のように作成する

.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 を追加する

設定完了した画面が以下となる
Scripts設定画面.png

エラー出力例

Xcode 10.3を利用するプロジェクトを11.0でビルドしようとした場合
バージョン番号違い.png

Xcode 11.0正式版を利用するプロジェクトを11.0 beta-8でビルドしようとした場合
ビルド番号違い.png

運用

.xcode-versionはバージョン管理し、チームで共有するようにする

利用するXcodeのバージョンを上げる際は、.xcode-versionファイル内の変数を変更する

参考

23
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
11