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.
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
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 with all its contents to the remote machine, and you should have the login cookie available.
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"