ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

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

找到我在 Appstore 上可用的应用程序的现有构建项目文件夹

从派生目录中删除了文件夹

推出 XCode 5

打开那个项目

清洁构建

在模拟器上测试和编译

重新存档

一切正常。什么都没有损坏。

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

对引用问题的接受答案是stackoverflow.com/a/7284632/8047,它没有说明不从 DerivedData 中删除...虽然档案对于以后调试东西很重要,但这是一个不同的目录。

P
Pavel P

是的,您可以直接从 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

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

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

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

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

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

点击首选项后..

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

你得到这个窗口

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


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

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

alias purgeallbuilds='rm -rf ~/Library/Developer/Xcode/DerivedData/*'

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


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

XCODE 12 更新

在选项卡上:

点击 Xcode Preferences Locations -> Derived Data

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


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

XCODE 7.2 更新

(也适用于 7.1.1)

单击窗口,然后单击项目,然后删除派生数据。

像这样:

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

然后在这里删除它:

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

希望有帮助!


这将使您能够一一手动删除它,但其他帖子中使用的方法是一次删除 DerivedData 文件夹内容
o
ohho
 $ 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......
D
Diego Freniche

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

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

xc-launch repo

最好使用 DTerm 启动


S
Steve Yost

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

点击产品菜单

按住选项键

单击清理构建文件夹


当我按住选项键时,Clean Build 选项显示为灰色。 :/
A
Ali Ihsan URAL

XCODE 10 更新

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

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

您可以使用右侧小图标访问派生数据文件夹

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


A
Ansal Antony

~/库/开发者/Xcode/DerivedData


默认是;我使用 ~/tmp/DerivedData,以便更轻松地访问已构建的文件/捆绑包。
μ
μολὼν.λαβέ

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

#!/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

C
Community

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

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


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

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

选择 Xcode -> 首选项..

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

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

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

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

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