Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XCode using GUID instead of iOS version number in Simulator Selection

Somewhere during the various updates of XCode in the last month, the iOS versions dropped from my simulator selection (image below.) Anyone know how to resolve this?

XCode simulators showing GUID not iOS version

like image 897
Gavin Miller Avatar asked Oct 23 '14 16:10

Gavin Miller


People also ask

How do I select simulator in Xcode?

Managing Simulator with Command LineYou can find the binary at /Applications/Xcode. app/Contents/Developer/usr/bin/simctl and you can use it with xcrun command-line tool. This binary is similar to the adb for Android. To check all available options of simctl enter the below-mentioned command in the terminal.

What are the two ways to access iOS simulator in Xcode?

There are two different ways to access Simulator through Xcode. The first way is to run your app in Simulator, and the second way is to launch Simulator without running an app.

How do I select simulated device as destination in Xcode?

Click view-->show toolbar if you don't see it. Click on IOS Device and you should get a drop down menu of devices. The simulator should be in that list.


3 Answers

How to fix it

Xcode uses the device version to disambiguate devices with the same name. If two devices have the same name and version number, it will use the devices' UDIDs.

You have 4 of each of a bunch of devices (eg iPhone 5s). I suspect that some of them are for the same iOS version. You should delete some of the duplicates. Check out xcrun simctl list and xcrun simctl delete or use the device manager within Xcode.app (click on the "-" to delete a device).

How to just get back to a default state

# Ensure all possible clients of CoreSimulatorService are no longer running:

killall Xcode 2> /dev/null
killall Instruments 2> /dev/null
killall 'iOS Simulator' 2> /dev/null
killall Simulator 2> /dev/null
killall 'Simulator (Watch)' 2> /dev/null
killall ibtoold 2> /dev/null
killall simctl 2> /dev/null
# There may be others

# Kill the service itself
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService

# Remove all the data and logs
rm -rf ~/Library/*/CoreSimulator

Why this might be happening:

CoreSimulatorService will monitor for the addition of new simulator runtimes in /Library/Developer/CoreSimulator/Profiles (eg, for when downloading them from Xcode -> Preferences -> Downloads). When installing a new runtime, CoreSimulatorService will create an initial set of devices for that runtime.

This problem arrises if there are multiple instances of CoreSimulatorService running at the same time. Each CoreSimulatorService instance will create its own set of devices (but its clients will only see that instances's sets at first). On subsequent launches (eg: after a reboot), both copies will be seen. One can get into a state where multiple copies of CoreSimulatorService are running at the same time due to testing beta versions of Xcode.app in the same login session as using the released Xcode.app or by having used Xcode.app before and after updating it through the App Store.

If you are aware of any other way that this bug might come about, please file a new radar at http://bugreport.apple.com

like image 160
Jeremy Huddleston Sequoia Avatar answered Oct 17 '22 09:10

Jeremy Huddleston Sequoia


Deleting multiple copies of the same version from the Devices window did the trick for me.

like image 27
Lycon Avatar answered Oct 17 '22 09:10

Lycon


I found this script to be the most efficient. I clears the list of existing simulators, than rebuilds it based on installed platforms.

See https://gist.github.com/cabeca/cbaacbeb6a1cc4683aa5

like image 3
Frans Avatar answered Oct 17 '22 08:10

Frans