Can I delete unnecessary device simulators of Xcode?
Domanda
I found that Xcode on my laptop consumes much of its storage, so I am trying to delete unnecessary files in Xcode.
There are four directories under Application/Xcode.app/Contents/Developer/Platforms/
. I feel that WatchSimulator.platform
and AppleTVSimulator.platform
are not necessary, because I use Xcode almost only for basic iOS development.
I would like to know if I can delete those platforms directories directly?
Soluzione
Yes, you can delete any simulator that you don't use. I do this routinely when I stop supporting older iOS versions.
If you delete them and then you find that you need them at some point in the future, you can redownload them from Apple's developer site.
The best way to delete them is in Xcode. Go to Window -> Devices and Simulators
. This will open a new window with all the devices you use in Xcode.
At the top, tap on Simulators
and you'll see a list on the left-side.
From there, find the simulator you want to delete and Cntl - click (or right-click) and select Delete
.
I do this with each simulator that runs in each iOS version that I no longer support.
Update July 2020: There's a free utility in the Mac App Store named DevCleaner for Xcode. This application can display and delete simulators and various caches. I've found it be a very quick and easy way to regain space. I'm not the developer or associated with this application in any way.
Altri suggerimenti
You can easily remove all unavailable simulators with this command in the terminal:
xcrun simctl delete unavailable
Xcode now shares the simulators with all users. So, you need to remove the simulators from the following folder:
/Library/Developer/CoreSimulator/Profiles/Runtimes
For example:
cd /Library/Developer/CoreSimulator/Profiles/Runtimes
sudo rm -rf iOS\ 8.4.simruntime/
sudo rm -rf iOS\ 9.3.simruntime/
Cheers!
Where Xcode stores simulators in 2019+ Catalina, Xcode 11.0
Runtimes
$ open /Library/Developer/CoreSimulator/Profiles/Runtimes
For example: iOS 13.0
, watchOS 6.0
These take the most space, by far. Each one can be up to ~5GB
Devices
$ open ~/Library/Developer/CoreSimulator/Devices
For example: iPhone Xr
, iPhone 11 Pro Max
. These are typically <15 mb each.
Explanation
Simulators are split between runtimes and devices. If you run $ xcrun simctl list
you can see an overview, but if you want to find the physical location of these simulators, look in these directories I've shown.
It's totally safe to delete runtimes you don't support. You can reinstall these later if you want.
Despite @fsb's answer allows to delete simulator "instances" the right way to free a massive space used by old simulator platforms not needed anymore is going to the following folder:
~/Library/Developer/Xcode/iOS DeviceSupport
and remove the folders corresponding to the simulator/platforms you don't need anymore.
Additionally, there is a very good article including this and other tips:
to list all simulators
xcrun simctl list devices
orxcrun simctl list --json
to delete specific device
xcrun simctl delete <device udid>
to remove old devices for runtimes that are no longer supported
xcrun simctl delete unavailable
To delete simulators by iOS version:
If you only want to remove simulators for a specific version, and you happen to have fastlane
installed, you can launch an interactive ruby shell and run the following commands to remove all iOS 10 simulators:
# launch the interactive ruby shell (irb)
$ irb
# require the device manager capabilities of fastlane core
irb(main):001:0> require 'fastlane_core/device_manager'
# delete all iOS 10 simulators
irb(main):002:0> FastlaneCore::Simulator.delete_all_by_version(os_version: "10.0")
Open Terminal.app and run the following:
cd /Library/Developer/CoreSimulator/Profiles/Runtimes
Now type the iOS version for which you want to remove simulators in below command, for e.g., if you want to remove for iOS 12.0, run:
sudo rm -rf iOS\ 12.0.simruntime/
Run below command in order to remove unsupported simulators. It will empty lot of space
xcrun simctl delete unavailable