Xcode模拟器:如何移除旧的不需要的设备?

273

我正在运行 Xcode 4.3.1 iOS 模拟器,原本只支持 iOS 5.1。

我需要使用 iOS 4.3 测试我的代码,因此我使用了 Xcode 的 "安装" 功能,在 "Installing Xcode with iOS 4.3 device simulator?" 中描述的方式进行安装。

现在我已经完成了测试,但是找不到卸载 4.3 部分 ("iPhone 4.3 Simulator" 和 "iPad 4.3 Simulator") 的方法。我想减少方案菜单中的混乱。

苹果的 Xcode 论坛上没有人知道答案!

编辑:注意,自 Xcode 4.3 以来发生了很多变化,所以建议阅读本文的所有答案。最新的答案,如 Steve Moser 的答案,可能对您更有用!

编辑于 2017 年 10 月:由 Julio Carrettoni‏ 在 Twitter 上发布

如果您是 iOS 开发人员,请执行以下操作:
$ xcrun simctl delete unavailable
它会删除 Xcode 不再使用的旧模拟器。对我而言它就是 6Gb 我没有尝试过...

[此外,我刚才看到 Russ Bishop 在下面的评论中提到了这一点...]

21个回答

6

在 XCode 中打开“窗口-设备”,然后选择并删除过时的模拟器。


4
有些人尝试使用一种方法来修复,有些人则使用第二种方法。基本上有2个问题,如果你检查并解决这两个问题,99%的情况下就可以解决此问题:
  1. 位于 YOUR_MAC_NAME(例如 Macintosh)->Users -> YOUR_USERNAMEdaniel)-> Library -> Developer -> Xcode -> iOS Device Support 的旧设备模拟器。保留最新版本,截至今天最新的版本是 13.2.3 (17B111),但未来会有变化。iOS 版本的最高编号(此处为 13.2.3)表示它更新。

  2. 在终端中运行 xcrun simctl list devices 列出你的设备清单。其中许多可能不可用,因此通过运行 xcrun simctl delete unavailable 删除它们。这也将释放一些空间。为确保一切正常,请再次运行 xcrun simctl list devices 检查。 此时您应该只看到最新版本(此处为 13.2.3)的设备,就像下面的屏幕截图所示。

enter image description here

额外的步骤,这与本问题略微不相关,但仍然可以释放一些空间。前往 YOUR_MAC_NAME(例如 Macintosh)-> Users -> YOUR_USERNAME(例如 daniel)- >Library -> Developer -> Xcode -> Archives。您将看到许多已存档的部署应用程序,很可能您并不需要所有这些应用程序。尝试删除那些不再使用的应用程序。

使用这2个方法和额外的步骤,我成功在我的 Mac 上获得了额外的 15 GB 空间。

PS. 简单地通过在 Xcode 中转到 Xcode -> Window -> Devices and Simulators -> Simulators(或使用键盘快捷方式 CMD+SHIFT+2)并在那里删除模拟器是没有用的。您必须按照上述步骤进行操作。


4
我写了一行bash脚本,可以删除所有的模拟器:
xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 xcrun simctl delete
  • xcrun simctl list devices 将会列出所有已安装在您的机器上的模拟器
  • grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" 可以获取设备 UUID
  • xargs -L1 xcrun simctl delete 将尝试删除每个找到的 UUID 对应的设备。

如果你想看到它将要执行的所有内容,你可以在 xcrun 前加上 echo,例如:

xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 echo xcrun simctl delete

4
  1. 打开Xcode --> 点击菜单栏中的“Window” --> 选择“Devices and Simulators” --> 点击模拟器 --> 右键点击要删除的模拟器 --> 点击“Delete”

  2. 如果您曾经通过Xcode安装了额外的组件,请使用以下步骤删除任何不需要的模拟器。

  • 打开终端

  • 输入open /Library/Developer/CoreSimulator/Profiles/Runtimes

  • 删除不需要的模拟器


3
我尝试了所有答案,但都没能解决我的问题。在Sierra + Xcode 8.2上,适用的方法是前往 /Library/Developer/CoreSimulator/Devices 并删除所有设备。也许这对你无效,或者作为一个独立的解决方案,或者你需要将其与其他答案一起使用,但我已经尝试了所有的解决方案,所以不确定哪个有效。请注意,这里的某些答案已经过时,模拟器的位置已经改变。Snowcrash's answer 似乎是最新的答案。

你可以假设你先关闭了Xcode,然后执行了这个操作,最后重新启动了Xcode吗? - David H
@DavidH 抱歉,我不记得我做了什么。我已经遇到这个问题三四周了。每次在切换项目/模拟设备时都会出现这个问题...我尝试了一切,这似乎对我有用...但可能对你来说是其他原因。 - mfaani
@DavidH 你也试过这个答案了吗? - mfaani
对于 Xcode 10 及更高版本,该文件夹是:~/Library/Developer/CoreSimulator/Devices - blackjacx

3

更新Xcode 14

Xcode 14中,你终于可以通过"平台"设置中的"卸载模拟器运行环境"功能来卸载Simulator运行时。只需选择一个,并点击左下角减号"-"按钮即可。


1
方便实用,但请注意它不包括额外的支持文件(当然也不包括缓存和项目构建文件),如 https://dev59.com/ZWgv5IYBdhLWcg3wHdN_#69623427 所述。如果想彻底清除文件,还应使用 xcrun simctl delete unavailable 清除 ~/Library/Developer/CoreSimulator/Devices/ 中不需要的数据,以删除使用此设置功能删除的运行时的设备,这可以根据您使用多个运行时和设备的程度而释放出千兆字节的空间。 - qix

3

你可以做的另一件事是将部署目标更改为最高值。这将防止方案菜单显示旧版本。

要执行此操作,请转到: 目标->摘要,然后更改部署目标。


也许自从我发布这个问题以来情况已经改变了,但当时你会在Scheme菜单中看到不同的模拟器,这只会让选择正确的模拟器变得更加复杂。 - David H

2
这些答案的问题是,每次 Xcode 更新时,菜单和位置都会发生改变。
只需进入 /Applications/Xcode.app/Contents/Developer/Platforms 并删除不需要的内容。Xcode 将继续正常运行。如果您担心的话,可以从回收站(Trash)中恢复删除的内容。

2
我非常怀疑Xcode会在其捆绑包中下载您请求的模拟器。它们肯定会进入用户库,不是吗?话虽如此,自从我遇到Xcode 4的问题以来,我从未下载过旧版本。 - David H
对于每个平台(iOS,watchOS,AppleTVOS,MacOS),我都有两个文件夹:“iPhoneOS.platform”和“iPhoneSimulator.platform”。我应该删除哪一个?我已经与同事核实过,他们确实都有这两个文件夹,但没有问题。我来这里的原因是因为这个问题,有人告诉我这是因为我有两个模拟器/Xcodes,但如果我做得正确,我已经删除了我的另一个Xcode版本,并且我也已经删除了9.3运行时... - mfaani
1
请千万不要这么做。没有人应该在Xcode捆绑包内操作内容。 - russbishop

1
在 Mac 上,检查 /Library/Developer/Xcode/iOS\ DeviceSupport。

iOS DeviceSupport


1
当前版本的Xcode使用略有不同的位置:/Library/Developer/CoreSimulator/Profiles - Andrew

1
您可以使用以下代码片段删除不可用的运行时:
echo "rm -rf $(xcrun simctl list runtimes -j |\
      jq ".runtimes[] | select(.isAvailable|not) | .bundlePath" | xargs)"

要执行,请删除echo或在末尾添加| bash

如果您没有可用的jq命令,则可以使用brew install jq获取它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接