Guies de Levo · Desenvolupadors: Apple

Com esborrar DerivedData i és segur fer-ho?

La llista Ready to free (llest per alliberar) de Levo amb les dades de compilació de Xcode obertes, i a sota els fitxers de Simulators i emuladors i de Device support

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 dinsOnQuè passa si s'esborra
Productes de compilacióDerivedData/<Project>-<hash>/BuildEs reconstrueixen a la propera compilació
Magatzem d'índexs…/Index.noindexXcode torna a indexar, així que la cerca i l'autocompletat van lents una estona
Registres…/LogsEls registres de compilacions antigues desapareixen del navegador d'informes
Paquets de Swift…/SourcePackagesEls paquets es tornen a baixar, així que necessites connexió a internet
Memòria cau de mòdulsDerivedData/ModuleCache.noindexEs 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.

  1. Un projecte, des de Xcode. Tria Product › Clean Build Folder (⇧⌘K). Neteja els productes de compilació del projecte, però deixa l'índex.
  2. 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.
  3. 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.