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

Xcode - free to clear devices folder?

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

~/Library/Developer/CoreSimulator/Devices/

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

有时 Xcode 喜欢加倍使用其模拟器。

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

Xcode > Preferences > Downloads

请记住,如果您那里有任何旧模拟器 (iOS 8.0-),您将无法通过 Xcode.

再次下载它们

更新!

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

About This Mac > Storage > Manage > Developer

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

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

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

如果你去终端,你可以使用 simctl 工具(Xcode 6+ 附带)列出你拥有的所有实际模拟器设备,连同 ID,以便您可以找出要删除的文件夹。

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

xcrun simctl list devices

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

== Devices ==

-- iOS 8.2 --

-- iOS 8.4 --

iPhone 6 Plus (23E36868-715A-48C8-ACC3-A735C1C83383) (Shutdown)

iPad Air (2928379B-70E3-4C59-B5BA-66187DDD3516) (Shutdown)

-- iOS 9.1 --

My Custom iPhone 4s (4F27F577-FFD0-42C1-8680-86BBA7394271) (Shutdown)

iPad Retina (85717B35-313A-4161-850E-D99D5C8194A6) (Shutdown)

-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-9-0 --

iPhone 4s (D24C18BC-268C-4F0B-9CD8-8EFFDE6619E3) (Shutdown) (unavailable, runtime profile not found)

由此可见,我没有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/ 文件夹中的 space,但有时这无济于事,因为文件刚刚移到 /var/folders 下的某个名为 [=18= 的文件夹中],它占用的空间与原始设备一样大 space。但是这个位置需要 root 权限来清理或重新启动,这两者都是不可取的。 从一位同事所做的一些测试来看,如果您先删除设备文件夹,然后通过 xcrun simctl delete 删除设备,这似乎不是问题。

在 Xcode 8:

  1. 运行 $ sudo du -khd 1在Terminal中查看每个文件夹的文件夹大小;
  1. 运行 $ cd library/developer/coresimulator/devices 查看为所有 Xcode 模拟器存储的 GB;

  2. 您将开始看到隐藏了大量存储空间的地方!现在只需导航到 Macintosh HD 上的该位置,然后查看每个设备文件夹中的 devices.plist

  3. 通过删除您过去 运行 但不再需要测试的任何 simulators/iOS 版本来决定要删除和保留哪些文件夹。可以充当旧备份的旧 sqlite 版本,或这些文件夹中存在其他内容,因此在删除此文件夹中的所有内容之前请考虑这一点。

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