xcode-install を利用した Xcode のバージョン管理をやってみた

Xcode のバージョン管理するが面倒くさい!そう思ったことはありませんか?

App Store から DL しても途中で失敗したりなかなかうまいこといきません。 仕方がないので Developer Center から直接 DL してきます。 そして古い Xcode.app をリネームして残しておき、新しいのと入れ替える。

そう、めんどくさいんです。。。

そんな時に neonichu/xcode-install と出会いました。 作者は try! Swift でも登壇されていた Boris Bügling さんです。

これは rbenv のような **env 系と似たような interface を持つ CLIXcode のバージョンを管理するのに特化しています。

これがとても便利だったので紹介します。

xcode-install の使い方

Installation

gem install xcode-install

Xcode を DL する際に Developer Center にログインする必要があります。

毎回ログイン情報を入力するのもめんどくさいので、XCODE_INSTALL_USER, XCODE_INSTALL_PASSWORD環境変数を指定しておくと楽になります。

password はいやだって人は ID だけでも設定しておくと、一度パスワードを入力すると次回からは keychain から取得してくれるのでそれでもいいかなと思います。

ここの部分は fastlane/credentials_manager を使っているようです

Usage

$ xcversion update
$ xcversion install 7.3.1

仕組みとしては簡単で Xcode_x.x.x.dmg を cache ディレクトリに保存し、それを /Application/Xcode-x.x.x.app にインストール後、xcode-select を実行してバージョンを切り替えてくれます

以下、ざっと使うコマンドを紹介していきます

インストール可能なバージョン一覧を表示

$ xcversion list
7
7.0.1
7.1
7.1.1
7.2
7.2.1 (installed)
7.3 (installed)
7.3.1 (installed)

--all をつけると、さらに古いバージョンも表示されます

インストール可能なバージョン一覧を更新

$ xcversion update

インストール済みのバージョン一覧を表示

$ xcversion installed
6.4     (/Applications/Xcode-6.4.app)
7.2.1   (/Applications/Xcode-7.2.1.app)
7.3     (/Applications/Xcode-7.3.app) 
7.3.1   (/Applications/Xcode-7.3.1.app)

DVTPlugInCompatibilityUUID を一覧で表示するオプションを追加した PR がマージされたので 1.3.0 の次のバージョンから使えるようになるでしょう。 Xcode Plugin を作ってる(使ってる)人には大助かりですね。

はやく使いたい方は master からインストールしてもらえれば使えます

$ xcversion installed --uuid
6.4     (/Applications/Xcode-6.4.app)     7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90
7.2.1   (/Applications/Xcode-7.2.1.app)   F41BD31E-2683-44B8-AE7F-5F09E919790E
7.3     (/Applications/Xcode-7.3.app)     ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C
7.3.1   (/Applications/Xcode-7.3.1.app)   ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C

利用する Xcode を変更

$ xcversion select 7.3.1

Simulator の install 状況を確認

$ xcversion simulators
Xcode 7.3.1 (/Applications/Xcode-7.3.1.app)
iOS 8.1 Simulator (installed)
iOS 8.2 Simulator (installed)
iOS 8.3 Simulator (installed)
iOS 8.4 Simulator (installed)
iOS 9.0 Simulator (installed)
iOS 9.1 Simulator (not installed)
iOS 9.2 Simulator (installed)
tvOS 9.0 Simulator (installed)
tvOS 9.1 Simulator (installed)
watchOS 2.0 Simulator (installed)
watchOS 2.1 Simulator (installed)

Simulator を install

$ xcversion simulators --install='iOS 9.1 Simulator'

Xcode_x.x.x.dmg を削除

一度 DL した Xcode_x.x.x.dmg は保存されたままになります。 ディスク容量が気になる方は cleanup を実行して削除してください

$ xcversion cleanup

はまりどこ

Developer Center にログインすると利用規約への同意画面が表示されるような状態のアカウントを使うと Xcode の DL に失敗(タイムアウト)します。 普段使っていないアカウントを使う場合は一度ログインして確認しておきましょう。

まとめ

xcode-install を使うことによって Xcode のアップデートが以下のような手順になります。

$ xcversion update             // 一覧更新
$ xcversion list               // 入れたいバージョンを確認
$ xcversion install x.x.x      // インストール

これだけで最新の Xcode が使えるようになり、バージョン管理も行ってくれます。 これで Xcode のヘッダーの diff をとってニヤニヤする作業もしやすくなりますね。