Guies de Levo · Desenvolupadors: Apple
Com esborrar DerivedData i és segur fer-ho?

Sí, és segur. DerivedData només conté resultats de compilació, índexs i registres que Xcode fa a partir del teu codi font, així que esborrar-lo et costa una compilació lenta i res més. Tanca Xcode primer, i no l'esborris mentre hi ha una compilació o un arxiu (archive) en marxa.
| Què hi ha a dins | On | Què passa si s'esborra |
|---|---|---|
| Productes de compilació | DerivedData/<Project>-<hash>/Build | Es reconstrueixen a la propera compilació |
| Magatzem d'índexs | …/Index.noindex | Xcode torna a indexar, així que la cerca i l'autocompletat van lents una estona |
| Registres | …/Logs | Els registres de compilacions antigues desapareixen del navegador d'informes |
| Paquets de Swift | …/SourcePackages | Els paquets es tornen a baixar, així que necessites connexió a internet |
| Memòria cau de mòduls | DerivedData/ModuleCache.noindex | Es reconstrueix, i la comparteixen tots els projectes |
Com fer-ho tu mateix
La carpeta és ~/Library/Developer/Xcode/DerivedData, amb una subcarpeta per projecte que du el nom del projecte més un hash. Tria el mètode que s'ajusti a què vols.
- Un projecte, des de Xcode. Tria Product › Clean Build Folder (⇧⌘K). Neteja els productes de compilació del projecte, però deixa l'índex.
- Un projecte, al Finder. Obre Xcode › Settings › Locations, fes clic a la fletxa petita que hi ha al costat de Derived Data i mou la carpeta d'aquest projecte a la Paperera.
- Tot, al Terminal. Amb Xcode tancat:
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
La carpeta en si pot quedar-se. Xcode la torna a crear si falta. Per a compilacions des de la línia d'ordres que fan servir -derivedDataPath, esborra aquella carpeta.
Espera si hi ha una compilació, un arxiu (archive) o una prova d'interfície en marxa, o si ets en un avió i fas servir paquets de Swift: SourcePackages també se'n va i cal tornar-lo a baixar. Per conservar-lo, esborra només les carpetes Build i Index.noindex.
Si un projecte es comporta de manera estranya després de netejar, restableix també els paquets amb File › Packages › Reset Package Caches. El mateix val per a les memòries cau de SwiftPM i CocoaPods.
Quan netejar-lo no soluciona el problema
Els desenvolupadors netegen DerivedData per desbloquejar una compilació encallada, i sovint funciona perquè la causa és una memòria cau de mòduls o un índex obsolets. Quan no funciona, el problema és en un altre lloc: un paquet que s'ha resolt a una versió equivocada, una carpeta Pods obsoleta o un ajust de signatura. Prova a continuació el restabliment de paquets de la guia de memòries cau de paquets.
Si la carpeta torna sempre a 30 GB o més, mira quines carpetes de projecte són les més grans: du -sh ~/Library/Developer/Xcode/DerivedData/* | sort -h. Cada branca o clon d'un projecte té la seva pròpia carpeta, perquè el hash surt de la ruta del projecte. Deu còpies d'una mateixa app són deu carpetes.
També pots moure DerivedData a un altre lloc, a un disc extern, a Xcode › Settings › Locations. Funciona, però les compilacions en un disc més lent van notablement més lentes. Per a la majoria de gent, compensa més netejar-lo periòdicament.
Com ho fa Levo
Levo mostra la carpeta DerivedData de cada projecte dins del grup de dades de compilació de Xcode, amb la seva mida i quan es va compilar per última vegada. Select › Smartly marca primer les carpetes dels projectes que no has tocat, o que ja no tenen la carpeta del codi font; la que has compilat aquest matí queda sense marcar.
Mentre Xcode, xcodebuild o els serveis de compilació s'estan executant, Levo marca la fila com a bloquejada i n'explica el motiu. Desmarques el que vols conservar i després Clean up. Levo per a desenvolupadors d'iOS i Mac té la llista completa del que busca.
Preguntes freqüents
És segur esborrar DerivedData?
Sí. Conté resultats de compilació, índexs i registres fets a partir del teu codi font. Xcode ho reconstrueix, així que la primera compilació després és més lenta.
On és DerivedData al Mac?
A ~/Library/Developer/Xcode/DerivedData. Obre els ajustos de Xcode (Settings), després Locations, i fes clic a la fletxa que hi ha al costat de Derived Data per mostrar-lo al Finder.
Perdré punts d'interrupció o esquemes si esborro DerivedData?
No. Això es desa al teu projecte o workspace, no a DerivedData. Perds els registres de compilacions antigues i l'índex en memòria cau.
Per què Xcode torna a omplir DerivedData?
Cada compilació hi escriu, una carpeta per projecte, més l'índex. Els projectes pesats i moltes branques sumen desenes de gigabytes, així que netejar-lo cada poques setmanes és normal.