42 votes

Mise à jour de Swift 3 / Xcode 8 - Des centaines de fichiers DerivedData manquent dans les erreurs de copie de travail

Je viens de passer à la dernière version Beta de XCode et Swift mais après avoir utilisé le convertisseur, mon projet d'application a maintenant plus de 200 erreurs jaunes au moment de la construction, toutes indiquant que /"projectDirectoy"/DerivedData/XXXXXXX/XXXXX/xXXX/xXX est manquant dans la copie de travail... où les XXXXX représentent divers chemins de fichiers dans le dossier DerivedData.

J'ai essayé de supprimer le dossier DerivedData de l'emplacement mentionné dans les erreurs.

J'ai essayé de supprimer tout ce qui se trouve dans le dossier DerivedData dans ~/Bibliothèque/.

J'ai essayé plusieurs fois de nettoyer le projet, de redémarrer et de faire une nouvelle construction.

J'ai essayé de désactiver le contrôle de la source dans les préférences mais je ne vois pas pourquoi je devrais le désactiver car il était activé avant la mise à jour et je veux qu'il reste activé.

Ces erreurs ne semblent pas vouloir disparaître.

Des idées ?

0 votes

Je les ignore simplement, ils semblent être un bug de xcode sans effet sur la construction réelle.

0 votes

D'après mon expérience, la seule façon fiable de supprimer le dossier DerivedData est de fermer Xcode d'abord. Cela forcera une recompilation complète lors de la prochaine construction. Parfois, Xcode semble empêcher la suppression de ce répertoire ou, au moins, de certains de ses contenus.

0 votes

J'ai essayé ce Vince et ça ne marche pas. Vous voyez un message en haut de XCode disant qu'il indexe et lie les fichiers mais les erreurs sont toujours là. Je pourrais essayer de recréer mon projet et de copier et coller chaque fichier dans un nouveau projet.

94voto

crashoverride777 Points 7880

Je faisais face aux mêmes avertissements après avoir mis à jour vers Xcode 8 GM, plus de 350. La plupart d'entre eux étaient des fichiers .swift et des images dans le catalogue de ressources.

Il s'agit essentiellement d'un problème de contrôle de source qui semble apparaître principalement lorsque vous déplacez/supprimez des fichiers de projet. Il s'agit soit de nouveaux avertissements, soit Xcode 8 est simplement beaucoup plus strict avec le contrôle de la source que Xcode 7.

Après avoir cherché sur Google, j'ai trouvé quelques réponses, mais elles me semblaient compliquées, par exemple l'utilisation de la ligne de commande ou même la suggestion de désactiver et de réactiver le contrôle de la source.

Voici ce qui a fonctionné pour tous mes projets.

Chemin court

Essayez d'abord ceci et si cela ne marche pas, faites le chemin le plus long.

1) Allez dans le menu Source Control (menu supérieur à côté de window et help) et cliquez sur Refresh Status (rafraîchir l'état)

2) Allez à nouveau dans le menu Source Control et cliquez sur commit

3) La fenêtre de commit devrait s'ouvrir avec tous les commits que Xcode pense être nécessaires. Il suffit donc d'entrer un commit dans le champ de texte et d'appuyer sur le bouton commit.

Répétez les étapes 1-3 jusqu'à ce qu'il n'y ait plus d'éléments sélectionnés par Xcode lorsque vous ouvrez le menu de livraison. Ne passez pas à l'étape 4 avant que tous les éléments sélectionnés automatiquement par Xcode aient été validés, sinon vous pourriez obtenir une erreur lors de l'étape 4.

4) Ouvrez à nouveau la fenêtre de commit et comme mentionné dans l'étape 3, il ne devrait plus y avoir d'éléments sélectionnés par Xcode. Cependant, vous devriez toujours voir quelques éléments dans la barre latérale gauche qui sont ceux qui causent les messages d'avertissement.

Cliquez avec le bouton droit de la souris sur un élément et sélectionnez tout, entrez un commit dans le champ de texte et appuyez ensuite sur le bouton commit. Tout devrait se terminer et les avertissements/erreurs devraient disparaître (vous pouvez éventuellement appuyer sur CommitMenu->Refresh Status à nouveau).

S'il ne se termine pas, fermez/réouvrez Xcode et recommencez les étapes 1-4.

Si cela ne fonctionne pas non plus, le long chemin devrait régler le problème.

Le long chemin

Si vous utilisez le contrôle de la source et que vous faites des commits régulièrement, faites éventuellement l'étape 1 et vous devriez pouvoir passer directement à l'étape 11.

1) Nettoyer les données dérivées de xCode (optionnel)

En général, vous n'avez pas à le faire, alors sautez cette étape lors de votre première tentative et passez à l'étape 3.

Allez dans les préférences de Xcode, cliquez sur l'onglet "locations", puis allez dans "advanced". Cliquez sur la petite flèche à côté du bouton avancé pour ouvrir le chemin du dossier dérivé. Fermez complètement Xcode et supprimez ensuite tout le contenu qui se trouve dans ce dossier dérivé.

Comme le membre Krivvenz l'a si gentiment indiqué dans sa réponse, il se peut que vous ayez à le faire de manière facultative. Je n'ai pas eu à le faire moi-même, alors peut-être que vous pouvez sauter cette étape et ne l'essayer que si cela ne fonctionne pas.

"J'ai également dû changer mon option DerivedData de relative à Custom qui peut être trouvée dans Xcode > Preferences > Locations Tab".

2) Relancez votre projet Xcode et attendez que l'indexation se termine. Cela peut prendre quelques minutes car vous venez de supprimer les données dérivées.

3) Allez dans le menu Source Control (menu supérieur à côté de window et help) et cliquez sur Refresh Status (rafraîchir l'état)

4) Allez à nouveau dans le menu Source Control et cliquez sur commit

5) La fenêtre de commit devrait s'ouvrir avec tous les commits que Xcode pense être nécessaires. J'en ai plus de 250 car je n'ai jamais utilisé le contrôle de source auparavant.

6) Cliquez sur "commit changes" en bas à droite

7) J'ai eu une erreur et l'opération ne s'est pas terminée (si cela fonctionne pour vous, passez au point 11).

8) Allez dans le menu Contrôle de la source et cliquez sur Rafraîchir l'état.

9) Allez dans Source Control et cliquez sur commit

10) Cliquez sur valider les modifications en bas à droite. Cette fois, il a suggéré environ 30 commits de moins et je n'ai eu aucune erreur. Si vous obtenez toujours des erreurs lors de votre deuxième tentative, essayez de fermer complètement Xcode, puis de le rouvrir et de répéter cette étape.

11) Allez dans le menu Contrôle de la source et cliquez sur Rafraîchir l'état.

12) Allez dans le menu de contrôle de la source et cliquez sur commettre

13) Cette fois-ci, il ne devrait pas y avoir de changements recommandés par Xcode mais vous verrez toujours beaucoup de fichiers dans le menu commit à gauche (non coché). Ces fichiers sont à l'origine des avertissements de la copie de travail, qui devraient également être présents.

14) Sélectionnez chacun de ces fichiers dans la barre latérale gauche du menu de livraison. Vous pouvez faire un clic droit et appuyer sur check all

15) Cliquez sur "commit changes" en bas à droite

16) J'ai eu une erreur et l'opération n'a pas abouti. J'ai donc réessayé et la même erreur s'est produite, j'ai donc fermé le menu commit. Si l'opération se termine pour vous, c'est bien aussi.

17) Allez dans le menu Contrôle de la source et cliquez sur Rafraîchir l'état.

Boom, tous les avertissements ont disparu.

18) Fermez complètement votre projet et Xcode

19) Ouvrez à nouveau votre projet

20) Allez dans le menu Contrôle de la source et cliquez sur Rafraîchir le statut.

21) Allez dans le menu Source Control et cliquez sur commit

22) J'ai soudainement eu 150+ commits suggérés à nouveau. Assurez-vous que toutes les suggestions sont sélectionnées, puis cliquez sur commiter et cela devrait se terminer sans erreur.

23) Nettoyer votre projet (Produit->Nettoyage)

24) Allez dans le menu Source Control et cliquez sur commit. Il ne devrait pas y avoir de changements requis et il ne devrait pas non plus y avoir de fichiers dans la barre latérale gauche.

Après tout cela, je n'ai plus d'avertissements, je n'ai pas eu besoin de supprimer le contrôle de la source et tout fonctionne à nouveau comme d'habitude.

Si vous rencontrez d'autres erreurs à l'avenir, par exemple parce que vous avez à nouveau déplacé un fichier, il suffit de refaire des commits en s'assurant que tout est sélectionné.

J'espère que cela vous aidera.

1 votes

Ça a marché pour moi dès que j'ai fait le commit.

0 votes

Génial. Il semble que Xcode 8 soit plus strict avec ces avertissements. Je les reçois aussi quand je supprime un fichier qui n'est pas dans Xcode.

0 votes

Meilleure réponse : j'ai dû sélectionner 542 fichiers un par un pour les livrer.

13voto

n13 Points 1506

Il s'agit d'un bogue dans XCode. Les avertissements sur les fichiers manquants disparaissent dès que vous git-commit votre arbre de projet.

0 votes

C'est la réponse si vous utilisez git sur le projet principal. Faites simplement un commit local -am "partiellement fait swift 3 transition".

4voto

Roy Lovejoy Points 91

J'avais un dossier .git malveillant dans un dossier parent qui n'allait vers rien

vérifiez dans le menu "Source Control" que toutes vos "Working Copies" se connecter réellement à un vrai dossier de contrôle des sources

AUCUN de ces "solutions" ont fonctionné pour moi, sauf celle-ci suppression du dossier .git malveillant

0 votes

Ça a marché pour moi. Pour clarifier, mes avertissements pour les fichiers manquants étaient dans l'espace de travail A et les chemins de fichiers manquants étaient tous pour d'autres espaces de travail ou projets. Il est clair que mon problème n'était pas de vrais fichiers manquants dans mon git qui devaient être ajoutés. J'ai trouvé un dossier .git dans mon dossier parent. Je l'ai corrigé !

3voto

nemissm Points 143

La suppression de DerivedData et git add . depuis le terminal, même sans commit, a résolu ce problème pour moi.

2voto

Dai Points 36

Il suffit de montrer tous les fichiers cachés et de supprimer le dossier git. Ouvrez un Terminal et exécutez cette commande pour afficher tous les fichiers cachés "defaults write com.apple.finder AppleShowAllFiles YES killall Finder"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X