ChatGPT解决这个技术问题 Extra ChatGPT

Xcode Simulator:如何删除旧的不需要的设备?

我正在运行最初仅支持 iOS 5.1 的 Xcode 4.3.1 iOS-Simulator。

我需要使用 iOS 4.3 测试我的代码,所以我使用 Xcode 的“安装”功能来安装它,如 "Installing Xcode with iOS 4.3 device simulator?" 中所述

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

Apple 的 Xcode listserv 上没有人知道答案!

编辑:请注意,自 Xcode 4.3 以来发生了很大变化,因此建议任何阅读本文的人查看所有答案。最新的,如史蒂夫莫泽的可能对你更有用!

编辑 10/2017:由 Julio Carrettoni 在 Twitter 上发布

如果您是 iOS 开发人员,请执行以下命令: $ xcrun simctl delete 不可用 它会删除 Xcode 不再使用的旧模拟器。对我来说是 6Gb 自己没有尝试过......

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


R
Roberto

在 Xcode 6+ 中,您只需转到 Menu > Window > Devices > Simulators 并删除不需要的模拟器。


这个问题与第 4 版和第 5 版有关。如您所见,这非常困难。从那时起,我自己就避免使用较旧的模拟器。
那是对的。如果您希望模拟器“真正消失”或在 Xcode 中重新安装它们 ->首选项->下载您必须删除模拟器运行时,如下所示stackoverflow.com/a/30206853/1344293
感谢这是管理模拟器的最简单方法。而不是从 xcode 文件夹中删除模拟器。这对我有用:)
如何删除具有旧 iOS 版本的设备?设备窗口仅显示 iOS 9.1(在 Xcode 7.1 上)的模拟器。我想避免在 Finder 中编辑 device_set.plist 和删除文件夹。
您还可以使用此脚本重新创建模拟器:gist.github.com/cabeca/3ff77007204e5479f7af
P
Pavel Kovalev

2020 年 10 月更新

如前所述,您可以使用 xcrun 做一些事情:

xcrun simctl list devices 或 xcrun simctl list --json 列出所有模拟器

xcrun simctl delete 删除特定设备

xcrun simctl delete 无法删除不再支持的运行时的旧设备

您可以使用 xcrun 执行更多操作(请参阅代码片段)

`xcrun simctl boot ` 启动(多个)模拟器 - `xcrun simctl io booted recordVideo — type=mp4 ./test.mp4` 录制模拟器视频 - `xcrun simctl io booted screenshot ./screen.png`制作模拟器的屏幕截图 - `xcrun simctl openurl booted https://google.com` 在模拟器中打开 URL - `xcrun simctl addmedia booted ./test.mp4` 上传照片或视频文件(用于照片应用程序) - `xcrun simctl get_app_container booted ` 以查找应用程序容器(其中标识符类似于 *com.bundle.identifier*) - `xcrun simctl help` 以探索 **more** 命令

原始答案

2017 年 9 月,Xcode 9

运行时

你会在这里找到它们:

/Library/Developer/CoreSimulator/Profiles/Runtimes

https://i.stack.imgur.com/P7E9C.png

设备

要删除设备,请访问此处:

~/Library/Developer/CoreSimulator/Devices

https://i.stack.imgur.com/84SuT.png

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

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

我希望它会帮助某人🙂


请不要从文件系统中删除设备;使用 xcrun simctl delete <device udid>。您还可以运行 xcrun simctl delete unavailable 来删除不再支持的运行时的旧设备。
我没有 ~/Library/Caches/com.apple.dt.Xcode/Downloads(在 ~/Library/Caches/com.apple.dt.Xcode/ 中没有下载文件夹),想知道为什么
您列出的文件夹路径不存在,Xcode 9.4
这就是我一直在寻找的:不是一个一个地删除 12.2 模拟设备,而是从系统中删除整个 12.2 模拟器。该路径适用于 XCode 10.3。删除后,我不得不重新启动它,模拟器的数量刚刚减半。
E
Evgeny Karkan

您是否尝试从 Xcode 包中删除 4.3 SDK?

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

请同时删除相应的.dmg文件

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

再次prevent Xcode from re-installing同一个包。

对于 XCode >= 6,请参阅 @praveen-matanam 's answer


这在 xcode 4.5.2 中不起作用。一旦您再次启动编译器,它会要求您再次安装旧的旧设备。 Cancel 将退出 xcode,因此您将被迫再次安装。
没错,Alejandro,Apple 似乎已经改变了“许可证”,因此您始终需要一个有效的开发者帐户,并且您必须在应用程序中的每次重大更新时一次又一次地安装所有扩展程序.. 遗留系统也大多不受支持;(
@AlejandroLuengo 你知道这是否在 4.6 中修复了吗?如果不是,我会提交一个错误报告。自从我第一次糟糕的经历以来,我一直刻意避免安装任何旧设备!
有关适用于 Xcode 4.6 的内容,请参见下面 Dan Reese 的回答。
与此答案 stackoverflow.com/a/30206853/286618 一起为 Xcode 6.3.1 工作。清除旧文档并节省 9GB!!!
B
Blaszard

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


6.4 这里。需要重启我的机器才能生效。
7.2 - 无需重启
xcode 8.0 需要重新启动以清除设备窗口中的无效模拟器
@thiagoveloso 这是因为您没有安装任何其他版本的模拟器,而是 iOS 10.0+。我只有 9.3、8.4 和 8.3 .simruntime 文件
我也可以在 ~/Library/Developer/...
S
Steve Moser

在终端中运行此命令以删除无法从您机器上使用的当前版本的 Xcode(8+?)中访问的模拟器。

xcrun simctl delete unavailable

此外,如果您要回收与模拟器相关的空间,Michael Tsai 发现删除 sim 日志为他节省了 30 GB。

~/Library/Logs/CoreSimulator

D
Dan Reese

如果您只是删除 SDK,Xcode 4.6 将提示您重新安装任何旧版本的 iOS 模拟器。为避免这种情况,您还必须删除 Xcode 缓存。这样您就不会被迫在启动时重新安装旧版 SDK。

要删除 iOS 5.0 模拟器,请删除这些,然后重新启动 Xcode:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/PhoneSimulator5.0.sdk ~/Library/Caches/com.apple.dt.Xcode

例如,在全新安装 Xcode 后,我从 Xcode 首选项安装了 iOS 5.0 模拟器。后来我觉得5.1就够了,但是5.0版本又删不掉了。 Xcode 一直强迫我在启动时重新安装它。删除缓存文件和SDK后,不再询问。


一个稍微更精确的答案here,虽然我自己还没有测试过。
r
rustyMagnet

我有同样的问题。我的空间快用完了。

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

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

删除您不想要的 iOS 版本并释放磁盘空间。我节省了 50GB 以上的空间。

https://i.stack.imgur.com/61mIy.png

注意 ->您看不到 Finder 内的 ~/Library 吗?默认情况下它是隐藏的。使用 Terminal 并输入 cd ~/Library/Developer/Xcode/iOS\ DeviceSupport/ 或 google 如何查看隐藏文件夹。

注意 -> 如果您在一台 macOS 机器上有多个用户,请确保仅使用最初安装 xCode 的用户帐户查找目录。


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

https://i.stack.imgur.com/DQdqA.png

但是,cd ~/Library/Developer/Xcode/iOS\ DeviceSupport 和运行 du -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)

总共有 33 GB!

一场血浴随之而来

查看更多详情here


e
eggsloveoats

2022 年更新

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

在开发人员下:您可以找到 Xcode 缓存和构建文件以及可以删除的旧版本 iOS 支持文件。

https://i.stack.imgur.com/diMew.png

在 macOS Big Sur 和 Monterey 上测试


R
Raymond

除了@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 首选项的“下载”选项卡显示该过时模拟器版本的勾号 ()。

要清除不需要的模拟器,您可以使用 Mac 终端中的 bash 命令进行搜索:

sudo find / -name "*PhoneSimulator*"

然后到对应目录手动删除不需要的 SimulatorSDK


D
Display Name

在 XCode 中打开 Window - Devices,然后选择并删除过时的模拟器。


T
Toland Hon

我写了一行 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

D
Daniel Danielecki

有些人尝试使用一种方法修复它,有些人尝试使用第二种方法。基本上,有 2 个问题,如果你检查它们并解决这两个问题 - 99% 应该解决这个问题:

旧设备模拟器位于 YOUR_MAC_NAME(例如 Macintosh)-> Users -> YOUR_USERNAME (daniel) -> Library -> Developer -> Xcode -> iOS Device Support。留在那里,最新的,截至今天这是 13.2.3 (17B111),但将来它会改变。 iOS 版本的最高数字(此处为 13.2.3)表示它较新。在此之后,通过运行 xcrun simctl list devices 在终端中列出您的设备。其中许多可能不可用,因此通过运行 xcrun simctl delete 不可用来删除它们。它也会释放一些空间。为确保一切正常,通过运行 xcrun simctl list devices 再次检查。您应该只能看到最新版本(此处为 13.2.3)的设备,如下面的屏幕截图所示。

https://i.stack.imgur.com/XlLMO.png

作为奖励,与此问题的相关性稍差,但仍有一些空间。转到 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)并在那里删除它不会有帮助。您确实需要执行所描述的步骤。


w
werdsackjon

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

为此,请转到:Target->Summary,然后更改部署目标。


也许自从我发布问题后情况发生了变化,但是当我这样做时,您会在 Scheme 菜单中看到不同的模拟器,而且选择正确的模拟器很复杂。
C
Community

我尝试了所有答案。他们都没有为我工作。

在 Sierra + Xcode 8.2 上对我有用的是:

/Library/Developer/CoreSimulator/Devices 并删除所有设备。

(也许这对你不起作用,也许这个 is 是一个独立的解决方案,或者除了其他答案之外你还必须这样做,但我在这里做了所有解决方案,所以不确定是什么做了这件事)。请注意,这里的一些答案是旧的,并且模拟器的位置已经改变。 Snowcrash's answer 似乎是最新的。


我可以假设您先关闭 Xcode,这样做,然后重新启动 Xcode?
@DavidH 抱歉,我不记得我做了什么。我的问题持续了 3-4 周。每次当我在项目/模拟设备之间切换时都会发生这种情况......我只是尝试了一切,这似乎对我有用......再次它可以为你做其他事情
@DavidH 您是否也尝试过this answer
对于 Xcode 10 和更新版本,文件夹是:~/Library/Developer/CoreSimulator/Devices
S
Snowcrash

这些答案的问题在于,每次 Xcode 更新时,菜单和位置都会改变。

只需转到 /Applications/Xcode.app/Contents/Developer/Platforms 并删除您不需要的内容。 Xcode 将开始正常。如果您完全担心,那么您可以简单地从垃圾箱中恢复。


我严重怀疑 Xcode 会下载你要求它捆绑的模拟器。他们肯定会进入用户库,不是吗?也就是说,自从我遇到 Xcode 4 问题以来,我从未下载过旧版本。
对于每个平台(iOS、watchOS、AppleTVOS、MacOS)我有 2 个文件夹:我有“iPhoneOS.platform”和“iPhoneSimulator.platform” 我应该删除哪一个?我与同事核对了一下,他确实有这两个但没有问题。我实际上在这里的原因是因为 this issue,有人告诉我这是因为我有 2 个模拟器/Xcode,但如果我没有正确我'已经删除了我的其他版本的 Xcode,并且我已经删除了 9.3 运行时......
请不要这样做。没有人应该弄乱 Xcode 包中的内容。
S
Sandesha

打开 Xcode --> Go to Window (from menu bar) --> Devices and Simulators --> 单击 Simulator --> 右键单击要删除的模拟器 --> 单击 Delete 删除任何不需要的模拟器您过去通过 Xcode 作为额外组件安装。

打开终端

键入打开 /Library/Developer/CoreSimulator/Profiles/Runtimes

删除不需要的模拟器


D
Dima Kozhevin

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

https://i.stack.imgur.com/lPASj.png


当前版本的 Xcode 使用的位置略有不同:/Library/Developer/CoreSimulator/Profiles
G
Guy Mazuz

您可以使用以下代码段删除不可用的运行时:

echo "rm -rf $(xcrun simctl list runtimes -j |\
      jq ".runtimes[] | select(.isAvailable|not) | .bundlePath" | xargs)"

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

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


S
Samer

命令+空格

输入“模拟器”

打开您不再需要的旧 Beta 版模拟器。

在 Dock 中右键单击它,然后选择“选项”>“在 Finder 中显示”

关闭应用程序,然后将其从文件夹中删除。

:)