
xcodebuild also has a new option to tell it to download all additional platforms: xcodebuild -downloadAllPlatforms:.The Xcode Preferences UI renames ‘Components’ to ‘Platforms’.xip download several GBs smaller and faster to install (~10GB down to ~7GB).
Xcode no longer bundles watchOS and tvOS runtimes with the app bundle, only a current iOS runtime. A new family of simctl commands to manage the above simulators: xcrun simctl runtime. Instead of installer packages, it uses a new disk-image-based distribution and storage mechanism for new optional simulators. Xcode 14 makes some big changes to this underlying infrastructure: This resulted in a lengthy installation time due to the huge number of files (watchOS 9 simulator alone is over 180K files), and Xcode’s interface provided no method (that I could find, at least) to remove these large runtime packages, leaving you to figure out where they’d been installed and remove them yourself. Under the hood, a “dvtdownloadableindex” plist file would be downloaded from Apple, containing metadata and templated URLs to download installer packages containing the full simulator runtime operating system packages, and then installed directly to the host’s filesystem inside /Library/Developer/CoreSimulator/Profiles/Runtimes. Prior to Xcode 14, one could navigate to the ‘Components’ section of the app preferences and download previous simulators. This is certainly the oldest post on the blog that I could say was still useful and accurate! Nearly ten years ago, I published a post about how to download and deploy the iOS simulator runtimes independently of the Xcode app bundle.