ChatGPT解决这个技术问题 Extra ChatGPT

Xcode - 免费清除设备文件夹?

我正在删除一些文件夹和文件,以便在我的驱动器上腾出更多空间。我知道在路径中:

~/Library/Developer/CoreSimulator/Devices/

每个模拟器和每个版本都有文件夹。这个文件夹对我来说大约有 11GB 大小。我知道我可以删除不再使用的旧版本的模拟器。但是从那个唯一的标识符中,我不知道哪个是正确的,哪个不是。所以我的问题是:我可以全部删除吗?如果下次我在模拟器中没有我的任何应用程序也没关系,但我可以失去更多东西吗?旧版本的模拟器?还是别的什么?谢谢


A
Aaron

~/Library/Developer/CoreSimulator/Devices/ 路径是 Xcode 存储您的各个模拟器设备所需的大部分数据的位置。

Beau Nouvelle 关于删除下载的模拟器版本的建议不会改变这些文件夹的大小,因为运行时存储在其他地方。

如果您进入终端,您可以使用 simctl 工具(Xcode 6+ 随附)列出您拥有的所有实际模拟器设备以及 id,以便您确定要删除的文件夹。

请注意,您会看到我在此答案中经常使用 xcrun simctl 。通过让 xcrun 为您当前选择的 Xcode 查找适当版本的 simctl,这增加了一些抽象。根据您的系统,您可能会通过删除“xcrun”部分来解决问题,命令行应该仍然可以找到 simctl 工具。

xcrun simctl list devices

以下是我收到的一些选定的输出片段:

== 设备 == -- iOS 8.2 -- -- iOS 8.4 -- iPhone 6 Plus (23E36868-715A-48C8-ACC3-A735C1C83383) (关机) iPad Air (2928379B-70E3-4C59-B5BA-66187DDD3516) (关机) -- iOS 9.1 -- 我的自定义 iPhone 4s (4F27F577-FFD0-42C1-8680-86BBA7394271) (关机) iPad Retina (85717B35-313A-4161-850E-D99D5C8194A6) (关机) -- 不可用:com.apple.CoreSimulator。 SimRuntime.iOS-9-0 -- iPhone 4s (D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3)(关机)(不可用,未找到运行时配置文件)

从中可以看出我没有 iOS 8.2 模拟器设备。我有一些 9.1 和 8.4 模拟器设备。我确实有一个 9.0 模拟器设备(我在 Xcode 7.0 上的工作的残余),但我没有 9.0 模拟器运行时本身。所以这是一个很好的删除候选者,或者提醒我应该去下载 Xcode 中的 9.0 模拟器。

如果需要,您可以使用这些 ID 来识别相关设备的文件夹并手动删除(在这种情况下,我将删除“D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3”文件夹),但您也可以使用simctl 工具来做到这一点。

根据simctl 7.1.1版本的用法:

xcrun simctl help delete
Usage: simctl delete <device> [... <device n>] | unavailable

所以我可以删除单个设备:

xcrun simctl delete D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3

或者我可以批量删除所有不可用的:

xcrun simctl delete unavailable

也没有必要将自己仅限于不可用的模拟器。

如果您需要该工具的任何进一步帮助,它带有一个相当直接的帮助命令:

xcrun simctl help

--

更高版本的 Xcode 使上述步骤变得不那么有效。我肯定只知道 Xcode 13.1。虽然删除模拟器仍会清理 ~/Library/Developer/CoreSimulator/Devices/ 文件夹中的空间,但有时这无济于事,因为文件刚刚移动到某个名为 Deleting-<guid> 的文件夹中的 /var/folders 下,占用的空间大约为原来的设备做到了。但是这个位置需要 root 权限来清理或重新启动,这两者都不是可取的。从同事所做的一些测试来看,如果您先删除设备文件夹,然后通过 xcrun simctl delete 删除设备,这似乎不是问题。


如果您收到错误 xcrun: error: unable to find utility "simctl",您应该可以使用,xcrun /Applications/Xcode.app/Contents/Developer/usr/bin/simctl
Xcrun 应该帮助您找到实用程序,这样您就不需要自己知道它们的路径。但是,如果您已经知道 simctl 的路径,则不需要“xcrun”。直接运行/Applications/Xcode.app/Contents/Developer/usr/bin/simctl
我在运行 simctl delete unavailable 后回收了 ~10 Gb,修剪了许多 iOS 版本的设备。我不知道这些还在那里。赢!
很酷,还有另一个问题,我们怎么知道哪个可用,哪个不可用?我已经使用 xcrun simctl delete unavailable 删除了那些 unavailable one,但文件夹仍然太大..
如果你有 Xcode-beta,simctl 会将 Xcode 的设备描述为不可用,反之亦然,所以如果你有两个你不应该做一个空白delete unavailable
B
Beau Nouvelle

有时 Xcode 喜欢在其模拟器上加倍。

通常对我来说,解决方法就是将它们全部删除。删除它们是无害的,因为您以后可以随时再次下载它们。

Xcode > Preferences > Downloads

请记住,如果您有任何旧模拟器(iOS 8.0-),您将无法通过 Xcode 再次下载它们。

更新!

您现在可以通过存储管理器在最新的 macOS 上管理 Xcode 设备。

About This Mac > Storage > Manage > Developer

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

另一个更新!

Xcode 14 现在会在安装时询问您要安装的模拟器。 Xcode 现在体积更小,安装速度更快——除非你为所有平台开发。


K
Karthik

不久前我遇到了类似的问题,xcode 在我的驱动器上占用了 47G。我尝试删除一些阻止我的 xcode 工作的模拟器设备(疯狂)。所以我删除了与 xcode 相关的所有内容并重新安装。这只是我的经验。


K
Karthikeyan

在 Xcode 8 中:

在终端中运行 $ sudo du -khd 1 查看每个文件夹的文件夹大小;

运行 $ cd library/developer/coresimulator/devices 以查看为所有 Xcode 模拟器存储的 GB;您将开始看到大量存储空间隐藏在哪里!现在只需导航到 Macintosh HD 上的该位置并查看每个设备文件夹中的 devices.plist;通过删除您过去运行但不再需要测试的任何模拟器/iOS 版本来决定要删除和保留哪些文件夹。可以充当旧备份的旧 sqlite 版本或这些文件夹中存在其他内容,因此在删除此文件夹中的所有内容之前请考虑这一点。

我第一次这样做时节省了超过 50GB。