Managing Xcode on the Command Line
xcode-install is a nifty tool to install and manage Xcode over the command line. Furthermore, it supports installing multiple Xcode versions side-by-side. It can even install all kinds of simulators and works great with automation tools like Ansible.
xcode-install uses fastlane under the covers. It downloads everything from the Apple Developer Portal. Consequently, you need a free ADP login to use xcode-install.
Authenticating to the Apple Developer Portal
Unfortunately, automatically logging into the Apple Developer Portal is a bit of a pain since Apple introduced 2FA. If you still have an old account without 2FA enabled, you can get away with a few environment variables:
ec2-user@Mac-mini ~ % export XCODE_INSTALL_USER=yourappleid
ec2-user@Mac-mini ~ % export XCODE_INSTALL_PASSWORD=yourpassword
ec2-user@Mac-mini ~ % export SPACESHIP_SKIP_2FA_UPGRADE=1
If you do not want that fastlane stores your credentials, set FASTLANE_DONT_STORE_PASSWORD=1
, too.
If your account has 2FA enabled, you have to create a login cookie first:
ec2-user@Mac-mini ~ % fastlane spaceauth -u yourappleid
ec2-user@Mac-mini ~ % export XCODE_INSTALL_USER=yourappleid
ec2-user@Mac-mini ~ % export XCODE_INSTALL_PASSWORD=yourpassword
The login cookie expires and needs to be renewed from time to time.
If you cannot create the login cookie on the remote machine, you have still options. fastlane spaceauth
prints the login cookie, including the necessary export
command to the terminal. This allows you to “transfer” the cookie to the remote shell. If this is not possible, either, you can take advantage of fastlane storing the cookie in ~/.fastlane/spaceship
. Copy ~/.fastlane/spaceship
with all its contents to the remote machine, and you should have the login cookie available.
A Short Tour of xcversion
Installing Xcode is a matter of running
ec2-user@Mac-mini ~ % xcversion install 13.2.1
and some patience. Unpacking and installing Xcode takes roughly half an hour. To see all available Xcode versions, run
ec2-user@Mac-mini ~ % xcversion list
4.3 for Lion
(...)
13.2
13.2.1 (installed)
Installing simulators is easy, too. xcversion simulators
gives you a list of all available simulators including their installation status. To install a specific simulator, for example, tvOS 15, run:
ec2-user@Mac-mini ~ % xcversion simulators --install="tvOS 15.0"