我可以安全地删除 Xcode Derived 数据文件夹的内容吗?

Posted

技术标签:

【中文标题】我可以安全地删除 Xcode Derived 数据文件夹的内容吗?【英文标题】:Can I safely delete contents of Xcode Derived data folder? 【发布时间】:2013-09-26 19:39:05 【问题描述】:

我的磁盘空间不足,并通过第三方实用程序检查 ~/Library/Developer/Xcode/DerivedData 目录占用了大约 22GB 的磁盘空间。

我搜索了***并找到了这篇文章

How can I safely delete in my ~/Library/Developer/Xcode/DerivedData directory?

这个问题的公认答案表明我不应该从这个目录中触摸/删除文件夹。所以我做的是

为我在 Appstore 上可用的应用找到一个现有的构建项目文件夹 从派生目录中删除了文件夹 推出 XCode 5 打开该项目 清理构建 在模拟器上测试和编译 重新归档 一切正常。没有任何损坏。

除非我错过了该帖子的答案,否则我想通过询问有经验的开发人员来确保,如果我从 DerivedData 中删除所有文件夹,它不会在构建、测试和编译这些项目时对我造成伤害。

【问题讨论】:

对所引用问题的接受答案是***.com/a/7284632/8047,它没有说明不从 DerivedData 中删除...尽管存档对于以后调试内容很重要,但这是一个不同的目录。 【参考方案1】:

是的,您可以直接从DerivedData 子文件夹(Not DerivedData Folder) 中删除所有文件。

这不会影响您的项目工作。 DerivedData 文件夹的内容是在构建期间生成的,您可以根据需要删除它们。这不是问题。

DerivedData 的内容将在您再次构建项目时重新创建。

Xcode8+ 更新

从 Xcode8 中删除了窗口选项卡中的项目选项,因此您仍然可以使用第一种方式:

Xcode -> Preferences -> location -> click on small arrow button as i explain in my first answer.

Xcode7.3 更新 要删除特定项目的 DeriveData,您只需执行以下步骤:

转到Window -> Project

你可以找到项目列表,你可以去DerivedData文件夹,也可以直接删除单个项目的DerivedData


我不在 Xcode5 上工作,但在 4.6.3 中你可以找到DerivedData 文件夹,如下图所示:

点击首选项后..

你会得到这个窗口

【讨论】:

非常感谢。 “派生数据”内容基本上就像 Xcode 的缓存和不需要的文件一样吗?所以这就是为什么可以删除它以清理空间? @gone 你在说什么?构建的文件必须放在某个地方。 好吧,使用 CMake 和其他 make 系统,即使使用源外构建,生成的文件等仍然在项目的路径中,如果我删除文件夹结构或清理时会被删除执行清洁。由于我每周左右标记大约 100 个作业,因此我需要记住要手动删除的大量文件,并使用 XCode UI 单独删除每个项目的数据。所以我坚持我之前的评论,尽管我现在已经在我的 .bashrc 中实现了威廉的别名。 XCode 8 再次改变了一切(它一直很痛苦)。现在,我们需要手动转到/Users/YourUsername/Library/Developer/Xcode/DerivedData 的文件夹并将它们全部删除。正如你已经为 XCode 7 编辑过的一样,我想你可能想为 XCode 8 再次编辑它。 您可以查看我的完整答案,在同一个旧答案中有多个答案仍在努力选择偏好和位置选项卡。 :)【参考方案2】:

我经常清除derivedData,以至于我有一个别名。它可以解决构建问题。我在 /Users/Myusername/.bash_profile

中有以下内容
alias purgeallbuilds='rm -rf ~/Library/Developer/Xcode/DerivedData/*'

然后在终端输入purgeallbuilds,DerivedData的所有子文件夹都被删除了。

【讨论】:

您可以删除 DerivedData 文件夹本身。它将被重新创建。 当我删除此文件夹时,Xcode 8 中的构建立即失败。一旦我将它添加回来,一切都会再次起作用。 这是非常有用的提示。我通常每半年就会遇到一次空间不足,而且很难记住应该清除哪些文件夹。别名绝对方便。【参考方案3】:

刚刚使用一个小脚本创建了一个 github 存储库,该脚本创建了一个 RAM 磁盘。如果您将 DerivedData 文件夹指向/Volumes/ramdisk,则在弹出磁盘后所有文件都将消失。

它加快了编译速度,也消除了这个问题

xc-launch repo

最好使用DTerm启动

【讨论】:

【参考方案4】:

我会说它是安全的——我经常删除许多 ios 项目的文件夹的内容,this way。而且,我在构建或提交到 App Store 方面没有任何问题。该过程会删除 Xcode 5 和 6 的派生数据并清理项目的缓存资产。

有时,只需在派生数据目录上调用 rm -rf 会留下一两个延迟文件,但我的脚本会循环,直到所有文件都被删除。

【讨论】:

呃。错字。我的意思是“提供” 啊,我正在链接到我在回答另一个问题时提供的脚本。这样,如果我想更新脚本,我只需要在一个地方进行编辑。你可以点击链接吗? 我现在看到了代码。之前没有看到链接(如果有的话)谢谢。【参考方案5】:

“派生数据”的内容是在构建时生成的。您可以安全地删除它。按照以下步骤删除“派生数据”:

    选择 Xcode -> 首选项..

    这将打开弹出窗口。选择“位置”标签。 在位置子标签中,您可以看到“派生数据” 点击路径旁边的箭头图标。

    这将打开包含“派生数据”的文件夹 右键单击并删除文件夹。

【讨论】:

【参考方案6】:
 $ du -h -d=1 ~/Library/Developer/Xcode/*

显示至少有两个文件夹很大:

 1.5G   /Users/horace/Library/Developer/Xcode/DerivedData
 9.4G   /Users/horace/Library/Developer/Xcode/iOS DeviceSupport

随意删除文件夹中的内容:

 rm -rf ~/Library/Developer/Xcode/DerivedData/*

还有一些:

 open ~/Library/Developer/Xcode/iOS\ DeviceSupport/

【讨论】:

废话...从旧版本的 iOS 中删除设备支持文件夹中的文件释放了 28GB...【参考方案7】:

XCODE 7.2 更新

(也适用于 7.1.1)

    点击Window,然后点击Projects,然后删除Derived Data

像这样:

然后在这里删除:


希望有帮助!

【讨论】:

这将允许您手动删除它,但其他帖子使用的方法是一次删除 DerivedData 文件夹内容【参考方案8】:

~/Library/Developer/Xcode/DerivedData

【讨论】:

默认是;我使用~/tmp/DerivedData,这样我可以更轻松地访问构建的文件/捆绑包。【参考方案9】:

XCODE 12 更新

在标签上:

    点击 Xcode 首选项 位置 -> 派生数据

您可以访问所有派生数据并通过删除它们来清除它们。

【讨论】:

派生数据部分仅定义派生数据的路径。我看不到任何地方可以查看和删除它们。为什么不直接通过命令行来做呢? @AlxVallejo 在路径地址的末尾,您将看到一个图标,将您带到文件夹。点击它并删除文件夹,它将重新创建。【参考方案10】:

是的,可以安全删除,我的脚本搜索并核对它找到的每个实例,轻松修改到本地目录

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
IFS=$'\n\t'

for drive in Swap Media OSX_10.11.6/$HOME
do
   pushd /Volumes/$drive  &> /dev/null
   gfind . -depth -name 'DerivedData'|xargs -I '' /bin/rm -fR ''
   popd &> /dev/null
done

【讨论】:

【参考方案11】:

XCode 8:删除当前项目的派生数据:

点击产品菜单

按住选项键

点击清理构建文件夹

【讨论】:

当我按住选项键时,Clean Build 选项灰显。 ://【参考方案12】:

XCODE 10 更新

点击状态栏上的Xcode 然后选择首选项

在弹出窗口中选择最后一段之前的Locations

您可以通过右侧小图标访问Derived Data文件夹

【讨论】:

以上是关于我可以安全地删除 Xcode Derived 数据文件夹的内容吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中删除 Fetch 索引元素

这段代码安全吗?将 std::vector<Derived*> 强制转换为 std::vector<Base*>

如何删除空白存档的Xcode文件(swift4)

Django:从数据库中安全地删除未使用的表

IOS xcode 8 有 2 个库以红色显示

我错误地从项目导航器中删除了一个文件,现在 xcode 说左上角没有方案