【发布时间】:2014-11-30 10:32:12
【问题描述】:
当我从 xcode 6 中选择模拟器时,我会得到多个选项来选择模拟器,但模拟器带有 UDID。请看下面的图片,请帮助我。提前致谢。
【问题讨论】:
标签: iphone ios8 ios-simulator xcode6gm
当我从 xcode 6 中选择模拟器时,我会得到多个选项来选择模拟器,但模拟器带有 UDID。请看下面的图片,请帮助我。提前致谢。
【问题讨论】:
标签: iphone ios8 ios-simulator xcode6gm
<del>killall Xcode</del>
- 杀死所有正在运行的 Xcode 进程。<del>sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService</del>
- 杀死所有正在运行的 CoreSimulatorService 进程。<del>rm -rf ~/Library/Developer/CoreSimulator/Devices</del>
- 从所有模拟器中删除所有模拟器数据。<del>open /Applications/Xcode.app</del>- 打开 Xcode。
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 相同的登录会话中测试 Xcode.app 的 beta 版本,或者在更新之前和之后使用了 Xcode.app,人们可能会进入同时运行多个 CoreSimulatorService 副本的状态通过 App Store。
如果您知道此错误可能出现的任何其他方式,请在http://bugreport.apple.com 提交新雷达
【讨论】:
* 对我来说很关键,因为 ~/Library/Logs/CoreSimulator 也需要删除。
另一个答案中的 bash 命令可能更简单,但您可以尝试这个更简单但更复杂的解决方案:
gem install snapshot; snapshot reset_simulators
https://github.com/KrauseFx/snapshot
通过@saniul
【讨论】:
在 Xcode 中,转到 Window -> Devices(快捷键是 Cmd+!)
在左侧窗格中,删除所有多余的模拟器设备(在左侧窗格中选择并按键盘上的删除)
通常这些是没有操作系统的(显示 iOS:n/a)。
当您尝试直接在 SDK 文件夹中复制较旧的模拟器版本而不是从 Xcode -> Preferences 安装它们时,通常会发生这种情况。
【讨论】:
转到窗口 -> 设备(快捷键是 Cmd+Shift+2) 在左侧窗格中,删除所有多余的模拟器设备(在左侧窗格中选择并按键盘上的删除) 通常这些是没有操作系统的(显示 iOS:n/a)。 当您尝试直接在 SDK 文件夹中复制较旧的模拟器版本而不是从 Xcode -> Preferences 安装它们时,通常会发生这种情况。
【讨论】:
正如@ameer-sheikh 所说,转到“窗口”>“设备” 您可能有多个设备具有相同的 iOS 版本。我遇到了同样的问题,在选择每个重复的设备并按删除后,我能够恢复我的设备下拉菜单的顺序
【讨论】: