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个回答

235
在Xcode 6+中,你可以简单地前往 菜单 > 窗口 > 设备 > 模拟器并删除您不需要的模拟器。

1
这个问题在版本4中很相关,可能也适用于版本5。正如你所看到的,它非常困难。自那时起,我避免使用旧的模拟器。 - David H
3
没错。如果你希望模拟器真正被删除或在Xcode -> 偏好设置 -> 下载中重新安装它们,你需要像下面提到的那样删除模拟器运行时(runtime) 。https://dev59.com/ZWgv5IYBdhLWcg3wHdN_#30206853 - mathz
谢谢,这是管理模拟器最简单的方法。不用从Xcode文件夹中删除模拟器。这对我很有效 :) - Chirag
如何删除使用旧版iOS的设备?设备窗口只显示使用iOS 9.1模拟器(在Xcode 7.1上)。我想避免编辑device_set.plist并在Finder中删除文件夹。 - bio
您也可以使用此脚本重新创建模拟器:https://gist.github.com/cabeca/3ff77007204e5479f7af - tomi44g
没错,它会从Xcode中删除模拟器。但它不会从您的Mac中删除模拟器以释放它们占用的大量空间。 - user1162328

224

2020年10月更新

如之前所提到的,您可以使用xcrun来进行以下操作:

  • xcrun simctl list devicesxcrun simctl list --json列出所有模拟器
  • xcrun simctl delete <device udid>删除特定设备
  • xcrun simctl delete unavailable删除不再受支持的运行时的旧设备

More things you can do with xcrun (see code snippet)

- `xcrun simctl boot <device udid>` to launch (multiple) simulators
- `xcrun simctl io booted recordVideo — type=mp4 ./test.mp4` to record simulator video
- `xcrun simctl io booted screenshot ./screen.png` to make screenshot of simulator
- `xcrun simctl openurl booted https://google.com` to open URL in simulator
- `xcrun simctl addmedia booted ./test.mp4` to upload photo or video file (for photos app)
- `xcrun simctl get_app_container booted <your apps bundle identifier>` to find the app container (where identifier is like *com.bundle.identifier*)
- `xcrun simctl help` to explore **more** commands

原始答案

2017年9月,Xcode 9

运行时

你可以在这里找到它们:

/Library/Developer/CoreSimulator/Profiles/Runtimes

enter image description here

设备

要删除设备,请前往此处:

~/Library/Developer/CoreSimulator/Devices

非常容易使用Xcode删除它们:

Xcode->窗口->设备和模拟器

enter image description here

帮助Xcode“忘记”运行时并防止重新安装它们-在此处删除.dmg文件:

~/Library/Caches/com.apple.dt.Xcode/Downloads

我希望它能对某人有所帮助


13
请不要从文件系统中删除设备;请使用“xcrun simctl delete <device udid>”命令。您还可以运行“xcrun simctl delete unavailable”来删除不再支持的运行时环境中的旧设备。 - russbishop
1
我没有/Library/Caches/com.apple.dt.Xcode/Downloads文件夹(在/Library/Caches/com.apple.dt.Xcode/中没有Downloads文件夹),不知道为什么。 - auspicious99
1
你列出的文件夹路径不存在,Xcode 9.4。 - Peter Cullen
这就是我一直在寻找的:不是逐个删除12.2模拟设备,而是从系统中删除整个12.2模拟器。该路径适用于XCode 10.3。删除后,我不得不重新启动它,模拟器的数量减半了。 - Display Name
我简直不敢相信在IDE中仍然没有“删除”或“卸载”按钮! - Karolina Hagegård

183

你是否尝试在Xcode软件包内删除4.3 SDK?

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs

还请删除以下路径下的相应.dmg文件:

~/Library/Caches/com.apple.dt.Xcode/Downloads

防止Xcode重新安装同一套件。


对于 XCode >= 6,参见@praveen-matanam 的答案


没错,Alejandro。苹果似乎已经改变了“许可证问题”,所以您始终需要一个有效的开发者帐户,并且您必须在每个应用程序的主要更新中再次安装所有扩展...遗留系统大多不受支持;( - childno͡.de
1
请参考下面Dan Reese的答案,该答案适用于Xcode 4.6。 - BJ Homer
2
适用于Xcode 6.3.1,以及这个回答:https://dev59.com/ZWgv5IYBdhLWcg3wHdN_#30206853。清理了旧的文档并节省了9GB! - RoLYroLLs
旧版XCode的好解决方案。对于最新版本,请查看Praveen的答案! - NDB
截至2018年9月,仍在macOS 10.13.6和Xcode 10下工作! - thiagoveloso
显示剩余3条评论

168

在 Xcode 6 及以上版本中,您可以从路径 /Library/Developer/CoreSimulator/Profiles/Runtimes 中查找并删除模拟器。重新启动 Xcode 以生效(可能不需要)。


这里是6.4版本。需要重新启动我的计算机才能生效。 - aasatt
2
7.2 - 无需重新启动 - TheEye
在macOS Sierra和Xcode 8.2上,该路径在我的电脑上不存在。 - thiagoveloso
2
@thiagoveloso 这是因为你没有安装其他版本的模拟器,只有iOS 10.0+。我这里只有9.3、8.4和8.3的.simruntime文件。 - Aleksey Potapov
1
我也可以在~/Library/Developer/...中。 - Roberto
显示剩余3条评论

91
在终端中运行此命令以删除在您的计算机上使用的当前版本Xcode(8+?)无法访问的模拟器。 xcrun simctl delete unavailable 此外,如果您想要回收与模拟器相关的空间,则Michael Tsai发现删除模拟器日志可以为他节省30 GB的空间。
~/Library/Logs/CoreSimulator

27
如果您只删除SDK,Xcode 4.6将提示您重新安装任何旧版的iOS模拟器。为了避免这种情况,请同时删除Xcode缓存。这样,您就不必在启动时强制重新安装旧版SDK。
要删除iOS 5.0模拟器,请删除以下内容,然后重新启动Xcode:
1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/PhoneSimulator5.0.sdk 2. ~/Library/Caches/com.apple.dt.Xcode 例如,在干净安装Xcode之后,我从Xcode首选项中安装了iOS 5.0模拟器。后来,我决定使用5.1版本,但无法删除5.0版本。每次启动时,Xcode都会强制我重新安装它。删除缓存文件和SDK后,它不再请求。

1
这里有一个稍微更精确的答案(https://dev59.com/A2bWa4cB1Zd3GeqPYJNZ#11790983),不过我自己还没有测试过。 - Dan Reese

26

我遇到了同样的问题。我的存储空间不足。

删除旧设备模拟器并没有帮助。

我的空间问题是由xCode引起的。自从我安装xCode以来,在我的macOS上它保留了每个iOS版本的副本。

删除您不需要的iOS版本,释放磁盘空间。我节省了50GB+的空间。

enter image description here



注意 -> 您不能在Finder中看到~/Library吗? 它默认是隐藏的。请使用Terminal并键入cd ~/Library/Developer/Xcode/iOS\ DeviceSupport/或搜索如何查看隐藏文件夹。



注意 -> 如果您在单个macOS机器上有多个用户,请务必找到仅包含最初安装xCode的用户帐户的目录。


我计算了9G以上 - 你是如何恢复75G的? - David H
嗨 @DavidH - 在我的清理之前,我的机器上有75GB的空间。由于我已经使用xCode多年了,它已经在我的电脑上默默地安装了iOS 7、8、9和10的每个变体。实际上,未来我可能只需要iOS10和iOS11。 - rustyMagnet
文件夹在xCode 9.4 @PeterCullen中确实存在。您只需要从最初安装xCode的用户帐户访问它即可。我在我的Mac上有两个共享xCode的用户帐户。只有安装xCode的用户帐户才能查看此文件夹。 - rustyMagnet
我正在使用安装Xcode的帐户访问它。但是它不在那里。 - Peter Cullen
1
你是否正在打开Finder并选择“前往文件夹”?默认情况下,Library是一个隐藏的文件夹。 - rustyMagnet
1
我按照其他答案中的建议运行了 xcrun simctl delete unavailable,但这并没有删除实际的iOS版本。感谢提示,那个文件夹里有一堆旧的/中间的版本!顺便说一句,在应用商店中有一个名为“DevCleaner”的应用程序,它可以列出所有内容,并且还可以删除特定的内容(包括旧日志和存档)。 - Neph

22

macOS Ventura 2023

与之前的版本相同,在您的聚光灯搜索工具中搜索存储,然后双击开发人员选项。

界面现在看起来有点不同了。

enter image description here

在2023年之前使用macOS Big Sur和Monterey

我们可以使用存储管理工具:⌘ + 空格键并搜索存储。

在开发者选项下:您可以找到Xcode缓存和构建文件,以及旧版本的iOS支持文件,您可以删除它们。

enter image description here

已在 macOS Big Sur 和 Monterey 上进行测试


11

根据这里的部分答案,我删除了Xcode 菜单 > 窗口 > 设备 > 模拟器中的一些模拟器,并没有对我的磁盘空间不足问题有所帮助: enter image description here

然而,通过运行cd ~/Library/Developer/Xcode/iOS\ DeviceSupportdu -sh * 命令,我列出了所有这些文件:

2.9G    10.0.1 (14A403)
1.3G    10.1.1 (14B100)
2.9G    10.3.2 (14F89)
1.3G    10.3.3 (14G60)
1.9G    11.0.1 (15A402)
1.9G    11.0.3 (15A432)
2.0G    11.1.2 (15B202)
2.0G    11.2 (15C114)
2.0G    11.2.1 (15C153)
2.0G    11.2.2 (15C202)
2.0G    11.2.6 (15D100)
2.0G    11.4 (15F79)
2.0G    11.4.1 (15G77)
2.3G    12.0 (16A366)
2.3G    12.0.1 (16A404)
2.3G    12.1 (16B92)

总共是33GB!

随之而来的是一场血腥屠杀。

在此处查看更多详细信息:这里


6
除了 @childno.de 的回答之外,你的Mac目录

/private/var/db/receipts/

可能仍包含过时的iPhoneSimulatorSDK .bom.plist 文件,例如:

/private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.bom /private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.plist

这些可能会使你在Xcode首选项的“下载”选项卡中显示一个勾 (),表示已安装过时的模拟器版本。
要清除不需要的模拟器,可以使用以下bash命令从Mac终端进行搜索:

sudo find / -name "*PhoneSimulator*"

然后转到相应的目录手动删除不需要的SimulatorSDK。

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