以下、最終更新日時時点の情報です。
たまにメンテナンスしています。
Xcode 6系のバージョン間の微妙な差異、特にSwiftで書いている場合しっかり把握しているとたまに捗ります( ´・‿・`)
Xcode | Swift | Apple Watch | tvOS | iOS SDK | CircleCI | Travis | 備考 |
---|---|---|---|---|---|---|---|
6.0 | 1.0 | 8.0 | |||||
6.1.1 | 1.1 | 8.1 | o | o | |||
6.2 | - | WatchKit | 8.2 | ||||
6.3.1 | 1.2 | 8.3 | o | o | エンバグ(※1) | ||
6.3.2 | - | 8.3 | 6.3.1のバグ直った | ||||
6.4 | - | 8.4 | 2015/07/01リリース・現最新 | ||||
7 | 2 | watchOS 2 | 9.0 | 2015/09/17リリース | |||
7.1 | 2.1 | watchOS 2 | 9.0 | 9.1 | o | o | 2015/10/22リリース |
7.2 | 2.1.1 | watchOS 2.1 | 9.1 | 9.2 | 2015/12/08リリース | ||
7.3 | 2.2 | watchOS 2.2 | 9.2 | 9.3 | o | o | 2016/3/21リリース |
書いても意味の薄いマイナーバージョンは一部スキップしています。 |
※1: エンバグについて
これです。
Embedded Framework使ってたり(+もう少し条件あるかも)すると、ビルドが詰まってものすごく時間がかかってまともに使えなくなります(´・︵・`)
Swift Compiler
Swift projects now compile quickly, fixing a speed regression in Xcode 6.3.1.
In Xcode 6.3.1, the Swift “Merge” compile phase could appear to hang for some targets. You no longer need to enable Whole Module Optimization in order to avoid this issue. (20638611)
Whole Module Optimization
がデフォルトNOなのですが、YESにするとこの問題回避出来ます。
僕はちょうどこの問題に引っかかって、けっこうハマりました。
(XcodeやSwiftのバージョン上がるといろんな問題が同時発生するので、何が原因か特定に手こずることがある)
どのバージョンのXcodeを使うかは基本お好みですが、極力最新のを使うのがベター、という前提の下、ユースケースとしては以下などですかね。
ユースケース
CircleCI・Travis使うなら
Xcode 6.3.1〜Xcode 7.1
この間にはSwiftの仕様に(ほぼ)差が無いため、僕はAppStore経由でインストール出来て取り回しの良い正式版最新のXcode 6.4で開発してます。
まあ差異があったらCI上でビルドエラーとして検知してくれますし。その結果どうしてもCI上のXcodeのバージョンと合わせなきゃいけないということになったら手元の環境も揃えるつもりですが、まだ困ったこと無いです。
→最近、Bitrise - Mobile Continuous Integration and Deliveryに乗り換えました。
正式版は即時追従してくれるし、β版もある程度追従してくれます。
Apple TVアプリ作るなら
Xcode 7.1 以降ですね。
管理のコツ
僕は以下のように管理していて、もう今後使わないであろうタイミングでこまめに削除しています。
- AppStore最新版はそのまま弄らずXcode.appとして扱う
- それ以外は、Xcode-6.3.1.appなどリネームして管理
- リネームしないとAppStore版で上書きされちゃったりする
xcode-select
コマンド活用
xcodebuild
など実行した時、どの版が使われるのかを管理します。
CI環境作っていれば日常的に実行することは無いですが、たまに検証などでこれ系のコマンド使います。
- 現在のパス確認:
xcode-select -p
- パス変更:
sudo xcode-select -s NEW_PATH
DEVELOPER_DIR
の環境変数に設定しても同様のことが出来ます。
リンク
- 過去のXcode: https://developer.apple.com/downloads/
- Pre-release系: Download - iOS - Apple Developer