【问题标题】:Xcode 6.4 showing duplicate 'Simulators' with Unique IdXcode 6.4 显示具有唯一 ID 的重复“模拟器”
【发布时间】:2015-09-25 21:56:49
【问题描述】:

直到昨天,Xcode 一切正常。它显示模拟器为:

但是今天,当我打开它时,模拟器列表变为:

每个模拟器都可以看到两次,名称后跟一个唯一的 ID。我还观察到同名 Simulator 也是两个不同的实例。

谁能帮助我,如何摆脱这个?或者如何重置。它看起来很奇怪。

任何建议都会有所帮助。

【问题讨论】:

  • 这里也一样。我删除了重复项,但没有用。此外,它不断重复;我现在每个模拟器都有 5 或 6 个副本
  • @josema.vitaminew 我也安装了 Xcode 7 Beta,你有吗?这可能是因为它。但 Xcode 7 表现正常。
  • 是的,我也有。可能是某种冲突,不确定
  • @josema.vitaminew 你试过 Duemuck 的回答吗?
  • 通过进入 Menu->Window->Devices 并删除重复项来修复它(例如,如果您看到 iPhone 6 的多个模拟器除一个以外的所有模拟器)。

标签: xcode ios8 xcode6 ios-simulator simulator


【解决方案1】:

来自sunnyxx's weibo的解决方案:

1.退出Xcode和iOS模拟器

2.killall -9 com.apple.CoreSimulator.CoreSimulatorService

3.rm -rf ~/Library/Developer/CoreSimulator/Devices

4.重新打开Xcode

编辑:sudo 似乎没有必要杀死 SimulatorService。此解决方案将删除所有现有的模拟器并重新创建所有可用的版本和类型模拟器。

【讨论】:

  • 最简单的解决方案!
  • 适用于 XCode 8 GM :) 谢谢
  • 与 Xcode 8 GM 完美配合。我上面唯一要改变的是这个。不要删除 ~/Library/Developer/CoreSimulator/Devices,而是将该目录移动到备份位置。如果出现问题,这将允许您返回到它。
  • 与 Xcode 8(App Store 版本)配合得很好。完成这些步骤后无需重新安装任何模拟器:所有“好”的模拟人都还在,所有“唯一 ID”的模拟人都不见了!
  • 这在 Xcode 8.0 中对我有用,但在 8.1 中似乎没有任何作用。
【解决方案2】:

我有一个更简单的方法来解决这个问题。

运行以下命令:

xcrun simctl list devices | grep -v '^[-=]' | cut -d "(" -f2 | cut -d ")" -f1 | xargs -I {} xcrun simctl delete "{}"

【讨论】:

  • 这对我来说是理想的解决方案。我有大约 80 到 100 个模拟器,并且逐个删除它是一个繁琐的手动过程,耗时太长。
  • 这删除了我所有的 iOS 模拟器。现在我什么都没有。不要运行这个命令!
  • @OrionEdwards 只需打开设备窗口 [cmd] + [Shift] + [2] 即可添加所需的模拟器。
  • 谢谢!手动删除 100 个模拟器简直就是地狱
  • @Pierre 你救了我 :) 我像 Orion Edwards 一样陷入恐慌,但现在我重新加载了我需要的模拟器。
【解决方案3】:

您可以使用以下命令:

snapshot reset_simulators

如果您还没有安装快照:

sudo gem install snapshot.

更多关于快照的信息在这里:https://github.com/krausefx/snapshot#installation

【讨论】:

【解决方案4】:

看起来很多模拟器在更新时被分成不同的设备。所以听起来你想做的是减少你的输出决定列表。

要查看模拟器列表,请在菜单栏上转到:Window > Devices。在这里,您将看到输出列表中显示的所有模拟器。没有理由不删除并通过添加您想要的模拟器重新开始

【讨论】:

  • 并不能真正帮助解决问题。下次我启动 Xcode 时,模拟器会再次复制。日常删除模拟器,直到我放弃。
  • 您应该尝试卸载 Xcode,删除由 Xcode 创建的所有文件,例如库中的 Developer 文件夹以及 iPhone Simulator 文件夹,然后重新安装。奇怪的是不断添加模拟器 D:
【解决方案5】:

去终端查看模拟器列表使用:

xcrun simctl list

使用 id 删除重复项:

xcrun simctl delete <ID>

例如

xcrun simctl delete 4B645F13-D130-412D-8EB4-B49BE7E2D7DA

【讨论】:

    【解决方案6】:

    通过进入 Menu->Window->Devices 并删除重复项来修复它(例如,如果您看到 iPhone 6 的多个模拟器,则删除除一个以外的所有模拟器)。

    【讨论】:

      【解决方案7】:

      Doz 的 oneliner 很好,但在某些 iPad 设备(如“iPad Pro(12.9 英寸)”)上提取模拟器的 UUID 的部分失败,因为它们的名称中有括号。我重写了使用 grep 而不是 cut 来解决这个问题:

      xcrun simctl list devices | grep -o '[A-F0-9]\{8\}-[A-F0-9]\{4\}-[A-F0-9]\{4\}-[A-F0-9]\{4\}-[A-F0-9]\{12\}' | xargs -I {} xcrun simctl delete "{}"
      

      【讨论】:

        【解决方案8】:

        我最终创建了一个脚本来删除 Xcode 模拟器重复项:

        https://gist.github.com/buscarini/6ec0ef1385f47fdbc505

        【讨论】:

        • 我安装了 Xcode 7 - Beta 3,现在我可以看到 4 个具有唯一 ID 的副本,而不是每个模拟器的 2 个副本。 :(
        • 下载要点并提取。然后每次有重复时运行 remove_sim_dups.py
        • 脚本中硬编码的“8.4”是什么?这仅适用于 iOS 8.4 吗? (我有 manu iOS 版本的副本)
        • 是的,它仅适用于 iOS 8.4。我手动删除了其他 iOS 版本的重复项,他们没有回来,我的问题只有 8.4
        • 这个脚本对我不起作用,我希望它只是删除所有这些,那应该是一个更简单的脚本
        猜你喜欢
        • 1970-01-01
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 2017-12-19
        • 1970-01-01
        相关资源
        最近更新 更多