Guide du stockage pour développeurs

Xcode prend toute ma place

Vingt à soixante gigaoctets sur un Mac en activité, répartis sur six dossiers, dont aucun n'est jamais nettoyé par Xcode. Voici chacun d'eux, à quoi il sert, et si vous pouvez le supprimer.

Essai gratuit de 14 jours, sans carte. Ensuite 15 $ une fois pour 3 ordinateurs.

Bytesweep listant par taille les dossiers DerivedData et fichiers d'appareils de Xcode

Mesurez d'abord

Une commande vous dit comment le total se répartit entre les dossiers de Xcode, pour savoir lequel viser :

du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator 2>/dev/null | sort -h

Les six dossiers

DerivedData — généralement le plus gros · suppression sans risque

Fichiers intermédiaires de compilation, index et caches de modules, un dossier par projet, conservés pour toujours, y compris pour des projets supprimés depuis longtemps.

~/Library/Developer/Xcode/DerivedData

Le supprimer coûte une compilation lente et rien d'autre. C'est aussi la solution classique quand Xcode se comporte bizarrement, ce qui explique que tout développeur iOS connaisse ce chemin par cœur.

iOS DeviceSupport — gros · suppression sans risque

Caches de symboles copiés depuis chaque appareil physique que vous avez branché, un dossier par version d'iOS. Plusieurs gigaoctets chacun, et ils s'accumulent pour des téléphones que vous n'avez plus.

~/Library/Developer/Xcode/iOS DeviceSupport

Xcode les recopie la prochaine fois que vous branchez un appareil sous cette version d'iOS — une première connexion plus lente, rien d'autre.

Appareils CoreSimulator — gros · sans risque pour l'essentiel

Chaque appareil simulé a son propre système de fichiers, et ils ne sont jamais récupérés. Utilisez la commande de Xcode plutôt que de supprimer des dossiers, pour que sa base reste cohérente :

xcrun simctl delete unavailable

Pour aller plus loin, xcrun simctl delete all supprime tous les appareils simulés. Les environnements de simulateurs eux-mêmes se gèrent dans Xcode → Réglages → Composants.

Archives — petites mais irremplaçables · à garder

Chaque version que vous avez publiée, avec ses symboles de débogage dSYM.

~/Library/Developer/Xcode/Archives

C'est celui qu'il faut laisser tranquille. Sans le dSYM d'une version publiée, vous ne pouvez pas symboliser les rapports de plantage des utilisateurs qui l'exécutent — les traces restent des adresses hexadécimales pour toujours. Si vous devez absolument récupérer de la place ici, gardez les archives de chaque version encore en circulation.

Et de nouveau après la prochaine version d'iOS

DerivedData revient le jour où vous compilez, DeviceSupport grossit à chaque appareil branché : c'est une corvée, pas une solution. Bytesweep trouve les six dossiers en un passage, garde les archives marquées à examiner plutôt qu'à nettoyer, et annule tout nettoyage pendant sept jours — ce qui compte le jour où vous videz le mauvais projet.

Cache de Swift Package Manager — suppression sans risque

Dépôts de dépendances clonés, récupérés à la demande.

~/Library/Caches/org.swift.swiftpm

Anciens environnements de simulateurs et anciennes versions de Xcode — avec précaution

Un ancien Xcode.app fait 15 Go à lui seul, et ses environnements quelques-uns de plus. Gardez la version dont vous avez encore besoin pour un vieux projet ; supprimez le reste dans le Finder, puis retirez les environnements associés dans Réglages → Composants.

Deux habitudes qui limitent la casse

Supprimer DerivedData par projet, pas en bloc

Chaque sous-dossier porte le nom d'un projet. Vider tout le dossier force une recompilation de tout ce sur quoi vous travaillez ; vider ceux des projets terminés l'an dernier ne coûte rien du tout.

Vérifier DeviceSupport après chaque version d'iOS

Il grossit d'un dossier par version d'iOS et par appareil branché, donc il grimpe discrètement toute l'année. Deux minutes chaque septembre l'empêchent d'atteindre 30 Go.

Trouver les six d'un coup

Bytesweep détecte chaque dossier Xcode par son nom, affiche sa taille, et marque les archives comme à examiner plutôt qu'à nettoyer. Tout ce que vous videz passe par un point de restauration : annuler est à un clic pendant sept jours.

À voir aussi : Docker disk space · la liste Mac complète

Questions

Peut-on supprimer DerivedData sans risque ?

Oui. Tout y est dérivé de vos sources, c'est exactement ce que dit le nom. Le seul coût est que la compilation suivante de chaque projet concerné sera complète.

Supprimer DeviceSupport casse-t-il le débogage sur mon téléphone ?

Non. Xcode recopie les symboles la prochaine fois que vous branchez un appareil sous cette version d'iOS. La première connexion suivante prend quelques minutes de plus.

Puis-je supprimer les archives Xcode ?

Vous pouvez, mais réfléchissez d'abord. Les archives contiennent les dSYM des versions publiées, et sans eux les rapports de plantage de ces versions ne peuvent pas être symbolisés. Gardez tout ce qui est encore entre les mains d'utilisateurs ; supprimez librement les vieilles bêtas.

Pourquoi Xcode.app est-il si gros ?

Environ 15 Go, parce qu'il embarque les chaînes d'outils, les SDK et les environnements de simulateurs pour chaque plateforme prise en charge par Apple. Vous pouvez retirer les environnements inutilisés dans Xcode → Réglages → Composants, mais le paquet applicatif lui-même est ce qu'il est.

Xcode nettoie-t-il tout cela automatiquement ?

Non. Aucun de ces dossiers n'a de limite de taille ni d'expiration. C'est toute la raison d'être de cette page.