LoginSignup
3
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-07-12

基本的に SDK バージョンやコンパイラのバージョンが変わらなければ Xcode バージョンが変わっても動作に変わりないため、Xcode バージョンをチェックするよりも SDK バージョンやコンパイラのバージョンを固定した方が良いと思います。

それを踏まえて、どうしても Xcode バージョンを固定したい場合に以下を参考にしてください。

tr;dr

プロジェクトのルートディレクトリに .xcode-version という名称で、バージョン番号を書いたファイルを書き出す。

# Xcode 8.3.2 を使用する場合
echo '8.3.2' >.xcode-version

Build Phase > Run Script に以下を記述する。

tr -d . < "$SCRIPT_INPUT_FILE_0" | xargs printf '%04d' | grep -q "$XCODE_VERSION_ACTUAL"
if [ $? -ne 0 ]; then
  echo 'Error: Detected wrong Xcode version. Please switch to the correct Xcode version.' >&2
  exit 1
fi

Run Script の Input Files に $(SRCROOT)/.xcode-version と書く。

Run Script を Build Phase の先頭に移動する

何をやっているのか

$XCODE_VERSION_ACTUAL

Xcode はビルド時に $XCODE_VERSION_ACTUAL に使用中の Xcode バージョンを出力する。

この変数は xcodebuild -showBuildSettings で確認できる。

$ xcodebuild -showBuildSettings 2>/dev/null | grep XCODE_VERSION_ACTUAL
    XCODE_VERSION_ACTUAL = 0832

このように右詰めでゼロパディングされた4桁の数字になる。

xcenv

複数の Xcode を管理するための xcenv というツールがある。
rbenv や pyenv と似たようなツールで、 .xcode-version というファイルがあると、そのディレクトリ以下では指定されたバージョンの Xcode を使うようになる。

これを使うかどうかは別として、明示的に .xcode-version にバージョンを書いておくと fastlane 等からも参照できて便利になる。

3
3
4

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
3
3