I’ve been having some issues lately with the iOS simulators on my MacBook. I kept getting messages of the sorts that some “/tmp” could not be deleted because of lack of permissions.
The only way to fix that was to create a new simulator device. But I was made aware of a tool thathelped mefix the dilemma.
Xcode lets you configure a variety of simulated devices on the Devices window. Click the Plus button, choose a descriptive name, select an iOS version and (optionally) a 42mm or 38mm simulated Watch.
So my workaround for a while was to create a new device there so that I could continue to debug apps. But it was quite tedious having to fiddle with the xcodebuild destination parameter to select my device.
Trying to fix the busted simulators I deleted them from Devices as well as tried to clean them from ~/Library/Developer/CoreSimulator/Devices but I didn’t end up in a satisfactory state.
I had ended up with two defunct simulators and only the “New Phone” simulator was actually functional.So I resigned to the situation and sent a sigh to the heavens with a wish attached that somebody should help me fix this.Snapshot
It so happened that I metTomaž Kragelj – of appledoc fame – atPragma Conferenceand while we were casually talking he mentioned this great tool which lets you completely reset your simulators to a pristine state.
The tool is Snapshot by Felix Krause and is part of Fastlane Tools . It isusually used for automating the taking of screenshots of your apps.It also has a facility for completely removing and recreating the standard simulators.
To install it you do:sudo gem install snapshot
The installation instructions also recommend updating your Xcode command line tools:xcode-select --install
Then I ran the following:snapshot reset_simulators
The lengthy result is shown in the following screenshot:
On this output you can see that two simulators could not be removed “because you don’t have permission to access it”. I tried the snapshot command with sudo but there was no difference.
So I searched for the mentioned device UDIDs and found them below ~/Library/Developer/CoreSimulator/Devices . A plain rm -rf did not work, again some messages about permissions, but sudo rm -rf finally managed to remove the defunct simulator device.
I ran snapshot again for good measure and finally ended up in the state that I was longing for. At fist glance I thought that the tool has made a mistake and duplicated the iPhone 6 simulators. But then I realized that the extra two were actually the iPhone 6s and iPhone 6s Plus.Conclusion
Snapshot is the first of the fastlane tools I tried and I loved it. There was the minor issue of messed up permissions where the tool failed, but that was easy to remedy by hand.
You also can see that I didn’t get a recreated tvOS Simulator, but that is probably because I was running this with Xcode 7.0 selected.
But all in all I am very happy that I have regained a set of functioning iOS simulators. Thanks Felix Krause!