当我从 xcode 6 中选择模拟器时,会有多个选项供选择,但每个模拟器都带有 UDID。请参见下面的图像,并在此先感谢您的帮助。
当我从 xcode 6 中选择模拟器时,会有多个选项供选择,但每个模拟器都带有 UDID。请参见下面的图像,并在此先感谢您的帮助。
killall Xcode
- 结束所有正在运行的Xcode进程。
sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
- 结束所有正在运行的CoreSimulatorService的进程。
rm -rf ~/Library/Developer/CoreSimulator/Devices
- 从所有模拟器中删除所有模拟器数据。
- 打开Xcode。
open /Applications/Xcode.app
以上来自xcode 10的步骤已经过时,请使用以下步骤:
xcrun simctl shutdown all
关闭所有设备。
xcrun simctl list devices|grep -v "unavailable"|grep -Eo "[0-9A-F\-]{36}"
列出所有可用设备。
xcrun simctl list devices|grep -v "unavailable"|grep -Eo "[0-9A-F\-]{36}"|xargs xcrun simctl delete
删除所有设备(注意:这是一行代码)。
更多详情请查看 xcrun simctl help
。
如何修复
Xcode使用设备版本来消除具有相同名称的设备的歧义。如果两个设备具有相同的名称和版本号,则将使用设备的UDID。
您拥有多个相同设备(例如iPhone 5s)。我怀疑其中一些是针对相同的iOS版本。您应该删除其中一些重复项。查看xcrun simctl list
和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相同的登录会话中测试Beta版本的Xcode.app或在更新App Store之后使用Xcode.app之前和之后使用Xcode.app,可能会出现多个CoreSimulatorService副本同时运行的状态。
如果您知道任何其他可能引起此错误的方式,请在http://bugreport.apple.com上报告一个新的雷达。
前往窗口 -> 设备 (快捷键是Cmd+Shift+2) 在左侧窗格中,删除所有多余的模拟器设备(在左侧窗格中选择并按键盘上的删除键) 通常这些是没有操作系统的设备(显示iOS:n/a)。 这通常发生在您尝试直接将旧的模拟器版本复制到SDK文件夹中而不是从Xcode -> 首选项中安装它们时。
另一个答案中的bash命令可能更简单,但您可以尝试这个更简单但更复杂的解决方案:
gem install snapshot; snapshot reset_simulators
https://github.com/KrauseFx/snapshot
通过@saniul