在模拟器select中使用GUID代替iOS版本号的XCode

在上个月XCode的各种更新期间,iOS版本从我的模拟器select中删除(下面的图片。)任何人都知道如何解决这个问题?

显示GUID不是iOS版本的XCode模拟器

如何解决它

Xcode使用设备版本来消除具有相同名称的设备的歧义。 如果两个设备具有相同的名称和版本号,则将使用设备的UDID。

你有一堆设备(如iPhone 5s)中的每一个4。 我怀疑他们中的一些是相同的iOS版本。 你应该删除一些重复的东西。 查看xcrun simctl listxcrun simctl delete或者使用xcrun simctl delete的设备pipe理器(点击“ – ”删除设备)。

如何恢复到默认状态

 # 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 

为什么这可能会发生:

CoreSimulatorService将监视/ Library / Developer / CoreSimulator / Profiles(例如,从Xcode下载 – > Preferences – > Downloads)时添加新的模拟器运行时。 在安装新的运行时,CoreSimulatorService将为该运行时创build一组初始设备。

如果同时运行多个CoreSimulatorService实例,则会出现此问题。 每个CoreSimulatorService实例将创build自己的一组设备(但其客户端将只能看到该实例的集合)。 在后续的启动(例如:重新启动后),这两个副本将被看到。 我们可以进入同一时间运行CoreSimulatorService的多个副本的状态,这是因为在Xcode.app的testing版本中,在与使用发布的Xcode.app相同的login会话中testingbeta版本,或者在更新之前和之后使用Xcode.app通过App Store。

如果您知道这个错误可能会发生,请在http://bugreport.apple.com上提供一个新的雷达。;

从“设备”窗口中删除相同版本的多个副本对我来说是个诀窍。

我发现这个脚本是最有效的。 我清除了现有模拟器的列表,而不是基于已安装的平台重build它。

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