Pourquoi Xcode prend autant de place, et comment la récupérer
Xcode lui-même est volumineux, mais l'essentiel de l'espace qu'il utilise se trouve en dehors de l'app : résultats de build dans DerivedData, fichiers de symboles pour chaque version d'iOS que vous avez branchée, appareils et runtimes de simulateur, et archives de chaque build que vous avez publié. Presque tout se trouve dans ~/Library/Developer, et la plus grande partie peut être recréée.
Vous trouverez ci-dessous les dossiers exacts, la commande ou le menu qui vide chacun d'eux, et ce que sa suppression vous coûte. Quittez Xcode et Simulator avant de commencer.
Voir où part l'espace
Avant de supprimer quoi que ce soit, mesurez. Cette commande affiche la taille de chaque dossier que Xcode et Simulator conservent dans votre Bibliothèque. Elle se contente de lire les tailles.
Sur la plupart des Mac de développeurs, les premières entrées sont CoreSimulator et Xcode, et à l'intérieur de Xcode les dossiers les plus volumineux sont DerivedData, iOS DeviceSupport et Archives.
du -sh ~/Library/Developer/* ~/Library/Developer/Xcode/* 2>/dev/null | sort -hDerivedData : résultats de build et index
Chemin : ~/Library/Developer/Xcode/DerivedData. Xcode crée ici un dossier par projet ou espace de travail, contenant les objets compilés, le cache des modules, l'index du code, les historiques de build et les paquets Swift récupérés pour ce projet. Les dossiers des projets que vous avez supprimés depuis longtemps restent en place.
C'est l'élément le plus sûr à supprimer, et en général le plus volumineux. La commande ci-dessous supprime tout le contenu de DerivedData, pour tous les projets. Vous pouvez aussi ouvrir le dossier dans le Finder et ne supprimer que les projets sur lesquels vous ne travaillez plus.
Ce que cela coûte : le prochain build de chaque projet est un build complet, Xcode réindexe le code et les paquets Swift sont résolus à nouveau. Vous ne perdez ni code source ni réglages.
rm -rf ~/Library/Developer/Xcode/DerivedData/*DeviceSupport : les symboles des appareils que vous avez branchés
Chemin : ~/Library/Developer/Xcode/iOS DeviceSupport, avec des dossiers équivalents pour watchOS, tvOS et visionOS. La première fois que vous connectez un appareil exécutant une version donnée du système, Xcode copie les symboles système de cette version pour pouvoir déboguer sur l'appareil et symboliquer les rapports de plantage. Chaque mise à jour du système sur chaque appareil ajoute un dossier de plus, de plusieurs Go chacun, et Xcode ne supprime jamais les anciens.
Ouvrez le dossier dans le Finder et placez dans la corbeille les versions que vous n'utilisez plus. Les noms des dossiers comprennent la version du système et le numéro de build : il est donc facile de voir lesquels sont anciens.
Ce que cela coûte : si vous connectez un appareil sous une version que vous avez supprimée, Xcode copie à nouveau les symboles, ce qui prend quelques minutes. Gardez les versions que vos appareils actuels exécutent.
Appareils et caches du simulateur
Chemin : ~/Library/Developer/CoreSimulator/Devices. Chaque simulateur est un dossier contenant un jeu complet de données pour cet appareil : apps installées, leurs documents, photos et réglages. Après une mise à jour de Xcode, les simulateurs qui dépendaient de runtimes que vous n'avez plus restent en place en tant qu'appareils indisponibles. La commande ci-dessous ne supprime que ceux-là.
Pour réinitialiser les simulateurs que vous gardez, xcrun simctl erase all efface le contenu et les réglages de chaque simulateur mais laisse les appareils en place. Ce que cela coûte : les apps et les données de test présentes dans ces simulateurs.
~/Library/Developer/CoreSimulator/Caches contient les caches que Simulator génère pour chaque runtime. Il peut être supprimé sans risque quand Simulator est fermé. Ce que cela coûte : le prochain démarrage de chaque simulateur est plus lent, le temps que le cache soit recréé.
xcrun simctl delete unavailableAnciens runtimes de simulateur
Un runtime est le système d'exploitation simulé lui-même, par exemple une version précise d'iOS. Chacun pèse plusieurs Go, et ils s'accumulent à mesure que vous installez de nouvelles versions de Xcode. Ils sont stockés dans le dossier /Library/Developer/CoreSimulator commun à tout le système, pas dans votre dossier de départ, et doivent être supprimés depuis Xcode ou avec simctl, pas à la main.
Dans Xcode, ouvrez Settings et choisissez Components (appelé Platforms dans Xcode 15). Sélectionnez un runtime sur lequel vous ne testez plus et supprimez-le. Depuis Terminal, la commande ci-dessous liste les runtimes installés avec leurs identifiants, et xcrun simctl runtime delete suivi d'un identifiant en supprime un.
Ce que cela coûte : vous ne pouvez plus exécuter de simulateurs pour cette version du système tant que vous n'avez pas téléchargé à nouveau le runtime, ce qui représente un gros téléchargement.
xcrun simctl runtime listArchives : réfléchissez avant de supprimer
Chemin : ~/Library/Developer/Xcode/Archives. Chaque fois que vous choisissez Product, puis Archive, Xcode stocke l'app compilée avec ses symboles de débogage (fichiers dSYM). Les archives sont regroupées dans des dossiers par date.
Gérez-les depuis l'Organizer de Xcode : choisissez Window, puis Organizer, sélectionnez Archives, cliquez sur une archive avec le bouton droit et supprimez-la.
Ce que cela coûte : c'est le seul élément que vous ne pouvez pas recréer à l'identique. Vous avez besoin des dSYM d'une archive pour symboliquer les rapports de plantage de ce build, et de l'archive elle-même si vous devez l'exporter ou la soumettre à nouveau. Gardez les archives des versions encore en ligne, et supprimez les anciens builds de développement et de test.
Caches des paquets Swift et aperçus
Swift Package Manager conserve un cache partagé des dépôts qu'il a clonés dans ~/Library/Caches/org.swift.swiftpm. La commande ci-dessous, exécutée depuis n'importe quel dossier de paquet, le vide. Ce que cela coûte : les paquets sont téléchargés à nouveau à la prochaine résolution.
Les aperçus SwiftUI s'exécutent dans leur propre jeu de simulateurs, stocké dans ~/Library/Developer/Xcode/UserData/Previews. Pour les supprimer, exécutez xcrun simctl --set previews delete all. Ce que cela coûte : le prochain aperçu met plus de temps à apparaître, le temps que Xcode recrée l'appareil.
Si vous utilisez CocoaPods ou Carthage, ils ont leurs propres caches en dehors des dossiers de Xcode.
swift package purge-cacheComment Diskzy traite les résidus de Xcode
L'onglet Clean up (nettoyage) de Diskzy trouve ces dossiers et choisit un réglage par défaut pour chacun, en affichant la raison. DerivedData est coché, sauf si Xcode est ouvert. Pour DeviceSupport, les deux versions les plus récentes sont conservées et les plus anciennes sont cochées. CoreSimulator Caches est coché. CoreSimulator Devices est décoché, car il s'agit de vos simulateurs et des données de leurs apps. Les archives sont listées mais décochées, pour que vous gardiez celles que vous pourriez devoir soumettre à nouveau.
Tout ce que Diskzy supprime va dans la corbeille : rien n'est donc perdu tant que vous ne l'avez pas vidée. C'est une app Mac native pour macOS 15 Sequoia ou version ultérieure, gratuite pendant 72 heures avec toutes les fonctions débloquées, puis à 9 $ une seule fois pour 2 Mac.
Questions fréquentes
- Peut-on supprimer sans risque le dossier DerivedData de Xcode ?
- Oui. Il ne contient que des résultats de build, des index et des historiques que Xcode régénère. Le prochain build de chaque projet prendra plus de temps, car rien n'est en cache.
- Puis-je supprimer le dossier iOS DeviceSupport ?
- Oui. Xcode copie à nouveau les symboles la prochaine fois que vous connectez un appareil exécutant cette version du système. Il est raisonnable de garder les versions que vos appareils actuels utilisent.
- Que fait xcrun simctl delete unavailable ?
- La commande supprime les appareils de simulateur dont le runtime n'est plus installé, ce qui correspond en général aux résidus d'anciennes versions de Xcode. Les simulateurs que vous pouvez encore exécuter ne sont pas touchés.
- Faut-il supprimer les archives Xcode ?
- Seulement celles dont vous n'avez plus besoin. Une archive contient les symboles de débogage utilisés pour symboliquer les rapports de plantage de ce build : gardez donc les archives des versions que vos clients utilisent encore.
- Pourquoi Xcode reprend-il de l'espace après un nettoyage ?
- DerivedData et les caches du simulateur sont recréés dès que vous compilez et exécutez un projet. C'est normal : le gain vient de la suppression des données des anciens projets, des anciennes versions du système et des simulateurs inutilisés.
Guides associés
- DerivedData~/Library/Developer/Xcode/DerivedData
- iOS DeviceSupport~/Library/Developer/Xcode/iOS DeviceSupport
- CoreSimulator Devices~/Library/Developer/CoreSimulator/Devices
- CoreSimulator Caches~/Library/Developer/CoreSimulator/Caches
- Xcode Archives~/Library/Developer/Xcode/Archives
Guides de désinstallation
Voyez où est passé l'espace de votre Mac
Diskzy cartographie votre disque, explique les Données système et supprime ce qui peut l'être sans risque. Gratuit pendant 72 heures, puis 9 $ une seule fois pour 2 Mac.
Essayer Diskzy gratuitement