Puis-je supprimer en toute sécurité le contenu du dossier de données dérivé Xcode?

293

Je manque d'espace disque et j'ai vérifié via un utilitaire tiers que, entre autres, le répertoire ~ / Library / Developer / Xcode / DerivedData prend environ 22 Go d'espace disque.

J'ai recherché stackoverflow et trouvé ce post

Comment puis-je supprimer en toute sécurité dans mon répertoire ~ / Library / Developer / Xcode / DerivedData?

La réponse acceptée à cette question suggère que je ne devrais pas toucher / supprimer des dossiers de ce répertoire. donc ce que j'ai fait était

  • Trouvé un dossier de projet de construction existant pour une application disponible sur l'Appstore
  • Supprimé le dossier du répertoire dérivé
  • a lancé XCode 5
  • Ouvrez ce projet
  • Construction propre
  • Testé et compilé sur un simulateur
  • Réarchivé
  • Tout fonctionnait. Rien n'était cassé.

Sauf si j'ai raté quelque chose dans cette réponse, je veux m'assurer en demandant aux développeurs expérimentés que si je supprime tous les dossiers de DerivedData, cela ne me nuira pas de créer, tester et compiler ces projets.

Sam B
la source
La réponse acceptée à la question référencée est stackoverflow.com/a/7284632/8047 qui ne dit rien sur la non-suppression de DerivedData ... bien que les archives soient importantes pour déboguer plus tard, mais c'est un répertoire différent.
Dan Rosenstark

Réponses:

372

Oui, vous pouvez supprimer directement tous les fichiers du DerivedDatasous-dossier (Not DerivedData Folder).

Cela n'affectera pas le travail de votre projet. Le contenu du DerivedDatadossier est généré pendant la construction et vous pouvez les supprimer si vous le souhaitez. Ce n'est pas un problème.

Le contenu de DerivedDatasera recréé lorsque vous reconstruirez vos projets.

Mise à jour Xcode8 +

À partir du Xcode8 qui a supprimé l'option de projet de l'onglet de la fenêtre, vous pouvez donc toujours l'utiliser en premier:

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

Mise à jour Xcode7.3 Pour supprimer les DeriveData d'un projet particulier, il vous suffit de suivre les étapes suivantes:

Allez à Window -> Project:

entrez la description de l'image ici

Vous pouvez trouver la liste des projets et vous pouvez soit aller dans le DerivedDatadossier ou supprimer directement les projets individuelsDerivedData

entrez la description de l'image ici


Je ne travaille pas sur Xcode5 mais en 4.6.3, vous pouvez trouver un DerivedDatadossier comme dans l'image ci-dessous:

entrez la description de l'image ici

Après avoir cliqué sur Préférences ..

entrez la description de l'image ici

Vous obtenez cette fenêtre

entrez la description de l'image ici

Nitin Gohel
la source
1
Merci beaucoup mec. Le contenu des «données dérivées» est-il fondamentalement semblable aux fichiers cachés et indésirables de Xcode? Alors, pourquoi est-il possible de le supprimer pour libérer de l'espace?
Supertecnoboff
1
@gone De quoi tu parles? Les fichiers créés doivent aller quelque part.
Droppy
2
Eh bien, avec CMake et d'autres systèmes de création, même avec des versions hors source, les fichiers générés, etc. sont toujours à l'intérieur du chemin du projet et sont supprimés si je supprime la structure de dossiers ou nettoyés lorsque j'effectue un nettoyage. Étant donné que je marque environ 100 affectations chaque semaine, j'obtiens une énorme accumulation de fichiers dont je dois me souvenir de supprimer manuellement et d'utiliser l'interface utilisateur XCode, les données de chaque projet individuellement. Je maintiens donc mon commentaire précédent, bien que j'aie maintenant implémenté l'alias de William dans mon .bashrc.
parti le
XCode 8 change à nouveau les choses (ça a toujours été douloureux). Maintenant, nous devons aller manuellement dans le dossier à /Users/YourUsername/Library/Developer/Xcode/DerivedDataet les supprimer tous. Comme vous l'avez édité pour XCode 7, je pensais que vous voudriez peut-être l'éditer à nouveau pour XCode 8.
sweta.me
1
vous pouvez vérifier ma réponse complète, il y a plusieurs réponses dans la même ancienne qui fonctionnent toujours pour aller de préférence et à partir de l'onglet emplacement. :)
Nitin Gohel
124

Je purge les données dérivées assez souvent pour avoir un alias. Il peut résoudre les problèmes de construction. J'ai les éléments suivants dans /Users/Myusername/.bash_profile

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

Puis dans le terminal, je tape purgeallbuilds, et tous les sous-dossiers de DerivedData sont supprimés.

William Jockusch
la source
24
Vous pouvez supprimer le dossier DerivedData lui-même. Il sera juste recréé.
Nick Lockwood
1
La construction échoue immédiatement dans Xcode 8 lorsque j'ai supprimé ce dossier. Une fois que je l'ai ajouté, les choses ont recommencé.
Tim
C'est une astuce très utile. Je suis généralement confronté à une pénurie d'espace tous les six mois et il est difficile de se rappeler quels dossiers doivent être purgés. L'alias est vraiment pratique.
Oliver Zhang
35

MISE À JOUR XCODE 10

Sur l'onglet:

  1. Cliquez sur Xcode
  2. Préférences
  3. Emplacements -> Données dérivées

Vous pouvez accéder à toutes les données dérivées et les effacer en les supprimant.

Umit Kaya
la source
La section Données dérivées définit uniquement le chemin des données dérivées. Je ne vois nulle part pour les voir et les supprimer. Pourquoi ne pas simplement le faire via la ligne de commande?
AlxVallejo
2
@AlxVallejo À la fin de l'adresse du chemin, vous verrez une icône qui vous amènera au dossier. Tapez dessus et supprimez le dossier et il sera recréé.
Umit Kaya
34

MISE À JOUR XCODE 7.2

(Fonctionne également pour 7.1.1)

  1. Cliquez sur Fenêtre, puis sur Projets , puis supprimez les données dérivées .

Comme ça:

entrez la description de l'image ici

Et puis supprimez-le ici:

entrez la description de l'image ici


J'espère que cela pourra aider!

Lukesivi
la source
2
Cela vous permettra de le supprimer manuellement un par un, mais les moyens utilisés dans d'autres publications sont de supprimer le contenu du dossier DerivedData à la fois
XIII
23
 $ du -h -d=1 ~/Library/Developer/Xcode/*

montre qu'au moins deux dossiers sont énormes:

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

N'hésitez pas à supprimer des éléments dans les dossiers:

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

et certains dans:

 open ~/Library/Developer/Xcode/iOS\ DeviceSupport/
ohho
la source
2
merde ... la suppression des fichiers des anciennes versions d'iOS dans le dossier de support de l'appareil libéré
28 Go
17

Je viens de créer un dépôt github avec un petit script, qui crée un disque RAM. Si vous pointez votre dossier DerivedData vers /Volumes/ramdisk, après avoir éjecté le disque, tous les fichiers auront disparu.

Il accélère la compilation, élimine également ce problème

repo de lancement xc

Meilleur lancement avec DTerm

Diego Freniche
la source
11

XCode 8: pour supprimer les données dérivées de votre projet actuel:

Cliquez sur le menu Produit

Maintenez la touche Option

Cliquez sur Clean Build Folder

Steve Yost
la source
Lorsque je maintiens la touche d'option, l'option Clean Build est grisée. : /
AlxVallejo
4

MISE À JOUR XCODE 10

Cliquez sur Xcode dans la barre d'état, puis sélectionnez Préférences

Dans la fenêtre contextuelle, choisissez les emplacements avant le dernier segment

Vous pouvez accéder au dossier Derived Data avec une petite icône de droite

entrez la description de l'image ici

Ali Ihsan URAL
la source
2

~ / Bibliothèque / Développeur / Xcode / DerivedData

Ansal Antony
la source
Par défaut oui; J'utilise ~/tmp/DerivedDatapour accéder plus facilement aux fichiers / bundles intégrés.
Droppy
1

oui, sûr à supprimer, mon script recherche et annule toutes les instances qu'il trouve, facilement modifié en un répertoire local

#!/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
μολὼν.λαβέ
la source
0

J'ai eu cette erreur car Int était int dans un fichier. Tellement stupide.

rajeswari ratala
la source
-1

Je dirais que c'est sûr - je supprime souvent le contenu du dossier pour de nombreux types de projets iOS, de cette façon . Et, je n'ai eu aucun problème avec les builds ou les soumissions à l'App Store. La procédure supprime les données dérivées et nettoie les actifs mis en cache d'un projet, pour Xcode 5 et 6.

Parfois, simplement appeler rm -rf dans le répertoire Derived Data laisse un ou deux fichiers persistants, mais mon script boucle jusqu'à ce que tous les fichiers soient supprimés.

Sheamus
la source
Pouah. Faute de frappe. Je voulais dire «fournir»
clearlight
Ah, je fais un lien vers le script que j'ai fourni dans une réponse à une autre question. De cette façon, si jamais je veux mettre à jour le script, je n'ai besoin de le modifier qu'en un seul endroit. Pouvez-vous suivre le lien?
Sheamus
Je vois le code maintenant. Je n'ai pas vu le lien avant (s'il était là) merci.
clearlight
-1

Le contenu des «données dérivées» est généré pendant la construction. Vous pouvez le supprimer en toute sécurité. Suivez les étapes ci-dessous pour supprimer les «données dérivées»:

  1. Sélectionnez Xcode -> Préférences ..

Étape 1

  1. Cela ouvrira une fenêtre pop-up. Sélectionnez l'onglet « Emplacements ». Dans le sous-onglet Emplacements, vous pouvez voir « Données dérivées » Cliquez sur l'icône en forme de flèche à côté du chemin.

Étape 2

  1. Cela ouvrira le dossier contenant les données dérivées, cliquez avec le bouton droit et supprimez le dossier.

Étape 3

Jayprakash Dubey
la source