在模拟器选择中使用GUID而不是iOS版本号的XCode

在模拟器选择中使用GUID而不是iOS版本号的XCode,xcode,ios-simulator,xcode6,Xcode,Ios Simulator,Xcode6,在上个月的各种XCode更新中,iOS版本从我的模拟器选择中删除了(下图)。有人知道如何解决这个问题吗 如何修复它 Xcode使用设备版本来消除同名设备的歧义。 如果两台设备具有相同的名称和版本号,它将使用设备的UDID 一组设备中每一个都有4个(例如iPhone 5s)。我怀疑其中一些是针对同一iOS版本的。您应该删除一些重复项。查看xcrun simctl列表和xcrun simctl delete或使用Xcode.app中的设备管理器(单击“-”删除设备) 如何回到默认状态 # Ensur

在上个月的各种XCode更新中,iOS版本从我的模拟器选择中删除了(下图)。有人知道如何解决这个问题吗


如何修复它

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

一组设备中每一个都有4个(例如iPhone 5s)。我怀疑其中一些是针对同一iOS版本的。您应该删除一些重复项。查看
xcrun simctl列表
xcrun simctl delete
或使用Xcode.app中的设备管理器(单击“-”删除设备)

如何回到默认状态

# 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将为该运行时创建一组初始设备

如果同时运行多个CoreSimulatorService实例,则会出现此问题。每个CoreSimulatorService实例都将创建自己的设备集(但其客户端在开始时只会看到该实例的设备集)。在随后的启动中(例如:重新启动后),将看到两个副本。由于在使用发布的Xcode.app的同一登录会话中测试Xcode.app的beta版本,或者在通过应用商店更新之前和之后使用Xcode.app,用户可能会进入一种状态,即CoreSimulatorService的多个副本同时运行


如果您知道此错误可能以任何其他方式出现,请在

处提交一个新的雷达从“设备”窗口删除同一版本的多个副本对我来说是最有效的。

我发现此脚本效率最高。我清除了现有模拟器的列表,然后基于已安装的平台重建它


参见

这确实回答了“有人知道如何解决这个问题吗?”而Kijit Desai没有假设为什么会出现多个相同版本的模拟器,这是最直接的答案(都来自Xcode本身)解决这种情况的方法确实是从Xcode的“设备”窗口中删除重复版本的SIM。我要补充的是,使用(+)按钮可以很容易地将模拟器添加回来,所以不必担心删除错误的模拟器(除非您想保存模拟器上的重要数据)。它显示用于区分具有相同设备和iOS版本的多个模拟器的GUID。如果在“设备”窗口中删除复制,列表将被清除。可能的复制: