Comment vider les caches et nettoyer toutes les cibles Xcode 4 et versions ultérieures

239

Jonathan suggère ici: Xcode inclut les fichiers .xib qui ont été supprimés! que nettoyer toutes les cibles et vider les caches résoudra le problème avec Xcode, y compris les fichiers .xib supprimés, mais je ne trouve pas de moyen de vider le cache dans Xcode 4.

Comment faire cela dans Xcode 4?

Attache-moi
la source
Voici ma [solution de script shell] [1], qui supprime les données dérivées, à la fois pour xCode 5 et 6. [1]: stackoverflow.com/a/27977848/1231948
Sheamus

Réponses:

515

Commande-Option-Maj-K pour nettoyer le dossier de construction. Encore mieux, quittez Xcode et nettoyez manuellement ~ / Library / Developer / Xcode / DerivedData . Supprimez tout son contenu car il y a un bogue où Xcode exécutera une ancienne version de votre projet qui se trouve quelque part. (Xcode 4.2 vous montrera le dossier des données dérivées: choisissez Fenêtre> Organiseur et passez à l'onglet Projets. Cliquez sur la flèche droite à droite du nom du dossier des données dérivées.)

Dans le simulateur, choisissez iOS Simulator> Réinitialiser le contenu et les paramètres.

Enfin, pour être complet, vous pouvez supprimer le contenu des dossiers / var / ; une certaine mise en cache s'y produit également.

AVERTISSEMENT: la suppression des dossiers / var / peut entraîner des problèmes et vous devrez peut-être réparer ou réinstaller votre système d'exploitation après cela.

EDIT: Je viens d'apprendre que si vous avez peur de vous attaquer à / var / dossiers / vous pouvez utiliser la commande suivante dans le terminal pour supprimer de manière plus ciblée:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

EDIT: Pour certains problèmes liés à Swift, j'ai trouvé utile de supprimer ~ / Library / Caches / com.apple.dt.Xcode . Vous perdez beaucoup lorsque vous faites cela, comme vos copies de rechange des ensembles de documents de documentation téléchargés, mais cela peut en valoir la peine.

mat
la source
6
Sympa, nettoyer le chemin: Library / Developer / Xcode / DerivedData + réinitialiser le contenu et le paramétrage du simulateur fonctionne!
Tieme
10
Le chemin semble être dans mon répertoire personnel (note tilde): ~ / Library / Developer / Xcode / DerivedData Peut-être que c'était évident pour les autres, mais au cas où quelqu'un d'autre aurait le problème ...
Victor Van Hee
37
Hehe, étant un übern00b, j'ai supprimé / var / db où j'ai trouvé quelque chose qui venait de Xcode / mon projet. Cela m'a coûté cinq heures de journalisation dans le système de fichiers, de réparation et de réinstallation de Lion, etc. Attention! :-)
Jonas Byström
4
@Jonas Je me suis senti obligé d'ajouter un avertissement au conseil "supprimer / var / dossiers". Ce n'est pas pour les non-initiés!
LearnCocos2D
7
Ne lancez pas rm -rf / var / dossiers avec sudo ou vous finirez par réparer comme moi :)
Josip B.
68

Command-Option-Shift-K devrait le faire. Sinon, allez dans le menu du produit, appuyez sur la touche d'option, maintenant l'option "Nettoyer" changera en "Nettoyer le dossier de construction ..." sélectionnez cette option.

sram
la source
Non, tant pis .. je viens de changer et de renommer un fichier xib et de nettoyer l'application comme vous l'avez dit, mais elle se charge toujours bien sans erreur.
Tieme
2
Wow, jamais nouveau sur ce truc de touche alt pour les menus Mac OS X !!! Cela définit vraiment la signification de "Alt" ernate.
trusktr
20

En plus de faire ce qui suit, vous pouvez rencontrer ce problème si les fichiers de Storyboard de votre application sont localisés. Tout d'abord, effectuez chacune de ces actions:

  • Construction propre
  • Réinitialiser le simulateur
  • Redémarrez Xcode
  • Supprimez votre DerivedDatadossier dans ~ / Library / Developer / Xcode / DerivedData
  • Redémarrer l'ordinateur

Ce qui a finalement fonctionné pour moi a été de régénérer les fichiers de localisation du storyboard et de supprimer la localisation en anglais (ce qui n'était pas nécessaire car les paramètres régionaux de base sont en anglais). Pour recharger vos chaînes de Storyboard, consultez cette réponse sur StackOverflow .

J'avais remarqué que les parties non textuelles de mon Storyboard étaient mises à jour, mais pas le texte localisé. Si vous avez une localisation dans votre application, je vous recommande de vérifier que vos localisations sont mises à jour (même si ce sont des .stringsfichiers).

Sam Spencer
la source
2
La suppression du contenu (pas du dossier entier) des dossiers / var / l'a fait pour moi! Si vous recherchez le /var/folders ... Choisissez Aller au dossier dans le menu Aller du Finder et entrez / var / comme emplacement du dossier.
Patricia
+1 sur l'instruction / var / dossiers ... le nettoyage et la suppression de DerivedData ont fonctionné en partie mais celui-là a fait l'affaire
EeKay
1
1. Clean Build 2. Reset Simulator 3. Redémarrez Xcode Cela a résolu mon problème.
Alan Dong
AVERTISSEMENT! Attention, la suppression de contenu /var/folders/peut entraîner de graves problèmes et entraîner la réinstallation complète d'OSx à partir de la console de récupération!
Magnus W
18

J'ai trouvé un autre moyen en plus de la commande + option + shift + K. Dans XCode 4.2, il existe un organisateur qui peut être ouvert à partir de l'icône en haut à droite. Vous pouvez nettoyer toutes les archives et les options de projet enregistrées à partir de là. Cela a aidé ma situation (je voyais d'anciens fichiers supprimés dans le mainBundle).

mert
la source
3
Ouais, c'est plus facile que de nettoyer manuellement ~ / Library / Developer / Xcode / DerivedData
Tieme
10

J'ai arraché les cheveux de ma tête parce que je pensais que j'avais le même problème. Lors de la création de l'application, je n'ai pas obtenu le même résultat sur mon iPhone que sur le simulateur.

Le problème était que j'avais en quelque sorte fait une version localisée du fichier MainStoryboard.storyboard. Donc, quand j'ai exécuté l'application sur mon téléphone, elle a montré la version danoise ... et le simulateur a montré la version anglaise.

Ouais je suis nouveau! :)

thehatisonfire
la source
2
J'ai eu des problèmes similaires. Commande-option-shift-K en vain. Supprimé ... DerivedData, pas de solution. Il s'est avéré que changer le XIB de niveau supérieur ne change que la version anglaise, et je testais avec la version néerlandaise du XIB. Soupir ...
fishinear
1
Sachez également qu'il existe des moyens de localiser votre application où des fichiers texte distincts sont créés pour chaque langue. Dans de tels cas, la modification du .xib ne fait rien.
dandan78
7

Pour supprimer toutes les données dérivées et le cache de module /var/foldersutilisé, utilisez ce petit script ruby .

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

Cela vient de résoudre une fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/erreur pour moi.

orkoden
la source
1
Le bogue apparent provoquant «erreur fatale: fichier AST mal formé ou corrompu:« Impossible de charger le module », et l'échec de la solution douce suggérée par Xcode, se produisent toujours dans Xcode 6.1. Et la solution pour quitter Xcode et nettoyer manuellement ~ / Library / Developer / Xcode / DerivedData manuellement fonctionne toujours. Je n'avais pas besoin de tout nettoyer là-dedans; seulement deux sous-dossiers: ModuleCache et le sous-dossier dont le nom est pertinent pour le projet problématique.
Jerry Krinock
5

J'ai eu quelques problèmes avec le crash de Xcode 5.1 sur moi, lorsque j'ai ouvert la fenêtre doc.

Je ne suis pas sûr de la cause de cela, car je mettais également à jour des docsets, alors que j'ouvrais la fenêtre.

Eh bien, dans Xcode 5, le répertoire des modules réside maintenant dans le dossier de données dérivées que je n'ai pas supprimé pour des raisons évidentes. J'ai supprimé le contenu de ~ / Library / Developer / Xcode / DerivedData / ModuleCache et le ~ / Library / Preferences / com.apple.Xcode.plist et tout semble alors fonctionner, après avoir redémarré Xcode.

McUsr
la source
1

Lorsque vous utilisez un "modèle de données", il existe des options dans l'inspecteur pour générer des classes, pour moi, c'était le cas car il y avait déjà une classe avec le nom existant.

Codegen: l'a résolu pour moi.

entrez la description de l'image ici

Wayne
la source
1

Mon "DerivedData" avec Xcode 10.2 et Mojave était ici:

MacHD / Users / [MyUser] / Library / Developer / Xcode

Mahdi Moqadasi
la source
0

Vous devez faire attention au fichier xib. J'ai essayé tout ce qui précède et rien n'a fonctionné pour moi. J'utilisais des boutons UIB personnalisés définis dans le xib, et j'ai réalisé que cela pouvait être lié au fait que j'avais attribué des attributs qui ne changeaient pas par programme. Si vous y avez défini des images ou du texte, supprimez-les. Quand je l'ai fait, mes changements de programme ont commencé à prendre effet.

Alyoshak
la source
0

Voici ma solution de script shell , qui supprime les données dérivées et nettoie les actifs mis en cache d'un projet, pour Xcode 4, 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
0

J'ai essayé presque tout mais je n'ai pas pu aider, ce qui m'a aidé à désactiver SIP (Protection de l'intégration du système) n cela fonctionne, je ne sais pas ce qui se passe quand et comment mais le fichier système se confond quelque part et provoque cela ... bien qu'il puisse y avoir des risques à désactiver cela évidemment

Voici comment

1.Allumez votre Mac et maintenez les touches [commande] + [R] pour accéder à la partition de récupération.

2.Dans la partition de récupération, cliquez sur Utilitaires dans la barre de menus, puis sélectionnez Terminal.

3.Saisissez la commande suivante dans Terminal et appuyez sur Entrée pour l'exécuter: csrutil disable

4.Une fois la commande exécutée, quittez le terminal et redémarrez le Mac. Lorsque vous vous reconnectez à OS X, SIP sera désactivé.

Castro Zwelithini
la source
1
Cela semble vraiment risqué. Que fait SIP?
Tieme
La protection de l'intégrité du système protège les fichiers système et les répertoires qui sont marqués pour la protection.ajoute fondamentalement plus de sécurité à votre système, limitant même la puissance de la commande sudo
Castro Zwelithini