Sviluppatori

Si possono eliminare DerivedData, i vecchi simulatori e iOS DeviceSupport di Xcode?

Cosa contiene ogni cartella di Xcode in ~/Library/Developer, quali si ricreano, perché gli Archives vanno trattati con cura e come rimuovere i simulatori.

Lettura: 6 minA cura del team di MoreRoom, Yando Pte. Ltd.Questa pagina in Markdown

In breve

  • DerivedData si può eliminare senza rischi: Xcode lo ricrea alla build successiva, al prezzo di una build più lenta e di una nuova indicizzazione.
  • Le cartelle di iOS DeviceSupport si possono eliminare; Xcode copia di nuovo i simboli la prossima volta che colleghi un dispositivo con quella versione.
  • Non eliminare gli Archives alla cieca. Contengono i file dSYM che servono a Xcode per simbolizzare i crash report delle build che hai distribuito.
  • Rimuovi i simulatori con xcrun simctl delete unavailable e i runtime con xcrun simctl runtime delete, non cancellando le cartelle a mano.
  • Ogni runtime del simulatore occupa in genere 7–10 GB, quindi togliere le versioni di iOS su cui non fai più test è spesso il guadagno singolo più grande.

Come liberare in sicurezza lo spazio occupato da Xcode

  1. Chiudi Xcode e Simulator. Esci da Xcode e dall’app Simulator, così nessuna build, indicizzazione o dispositivo avviato sta usando le cartelle che stai per ripulire.
  2. Elimina DerivedData. Apri ~/Library/Developer/Xcode/DerivedData nel Finder e sposta il contenuto nel Cestino. Xcode ricrea ciò che gli serve alla build successiva.
  3. Rimuovi le vecchie cartelle DeviceSupport. In ~/Library/Developer/Xcode/iOS DeviceSupport, sposta nel Cestino le cartelle delle versioni del sistema e dei dispositivi su cui non fai più debug.
  4. Elimina i simulatori non disponibili. Esegui xcrun simctl delete unavailable nel Terminale per rimuovere i dispositivi simulati il cui runtime non è più installato.
  5. Rimuovi i runtime che non ti servono più. Esegui xcrun simctl runtime list, poi xcrun simctl runtime delete con l’identificatore di ogni runtime su cui non fai più test, oppure usa Xcode › Settings › Components.
  6. Verifica gli Archives per ultimi. Apri Window › Organizer › Archives e conserva l’archivio di ogni build che gli utenti potrebbero ancora usare. Copia quelli più vecchi su un altro disco prima di eliminarli.

Nella maggior parte dei casi, sì. DerivedData, iOS DeviceSupport, i cloni dei dispositivi di test, i simulatori delle anteprime e le cache di Xcode si possono eliminare senza rischi: Xcode li ricrea quando gli servono. Anche simulatori e runtime dei simulatori si possono rimuovere, ma con lo strumento simctl di Apple invece che dal Finder. L’unica cartella da trattare con cura è Archives, perché contiene i simboli di debug delle app che hai distribuito.

Su un Mac usato per lo sviluppo iOS, queste cartelle arrivano spesso insieme a decine di gigabyte. Ecco cos’è ciascuna e il modo più pulito per rimuoverla.

Dove Xcode conserva i suoi dati

Quasi tutto si trova in ~/Library/Developer, nella tua cartella Inizio. Fanno eccezione i runtime dei simulatori: sono immagini disco di sistema gestite da macOS.

Cartella Percorso Si può eliminare? Torna?
DerivedData ~/Library/Developer/Xcode/DerivedData Sì Sì, alla build successiva
Archives ~/Library/Developer/Xcode/Archives Da verificare No
iOS DeviceSupport ~/Library/Developer/Xcode/iOS DeviceSupport Sì Sì, quando colleghi il dispositivo
Dispositivi simulati ~/Library/Developer/CoreSimulator/Devices Usa simctl Ricreali in Xcode
Runtime dei simulatori /Library/Developer/CoreSimulator/Volumes Usa simctl Scaricali di nuovo
Cloni dei dispositivi di test ~/Library/Developer/XCTestDevices Sì Sì, durante i test in parallelo
Anteprime SwiftUI ~/Library/Developer/Xcode/UserData/Previews Sì Sì, quando usi le anteprime
Cache dei simulatori ~/Library/Developer/CoreSimulator/Caches Sì Sì
Cache di Xcode ~/Library/Caches/com.apple.dt.Xcode Sì Sì

La stessa logica di DeviceSupport vale per le cartelle vicine watchOS DeviceSupport, tvOS DeviceSupport, visionOS DeviceSupport e macOS DeviceSupport.

Mappa delle cartelle di Xcode in ~/Library/Developer con le etichette «Rimozione sicura» e «Da verificare»

DerivedData: si può eliminare, Xcode lo ricrea

DerivedData contiene i prodotti intermedi della build, l’indice del codice sorgente, i log di build e le cache dei moduli, in una sottocartella per progetto. Eliminarlo non tocca mai il tuo codice. Il costo è il tempo: la build successiva di ogni progetto riparte da zero e Xcode deve reindicizzare prima che il completamento del codice torni pienamente operativo.

Chiudi prima Xcode, poi sposta il contenuto nel Cestino:

open ~/Library/Developer/Xcode/DerivedData

Per ripulire un solo progetto, elimina solo la sua sottocartella (con il nome del progetto seguito da un suffisso casuale). Product › Clean Build Folder in Xcode rimuove i prodotti di build ma di solito lascia l’indice al suo posto, quindi libera meno spazio. Puoi controllare o cambiare la posizione in Xcode › Settings › Locations.

Archives: conserva ciò che hai distribuito

Ogni .xcarchive è una build firmata che hai creato con Product › Archive e contiene i file dSYM dell’app. Xcode li usa per aggiungere i nomi dei simboli ai crash report: senza il dSYM corrispondente, un crash di quella build mostra indirizzi di memoria invece dei nomi delle funzioni. Anche i servizi di crash reporting di terze parti hanno bisogno degli stessi file.

Quindi verifica gli archivi invece di svuotare la cartella. In Window › Organizer › Archives, elimina le build che nessun utente usa più, come le vecchie build di test interne. Per le versioni ancora sull’App Store o in TestFlight, conserva l’archivio, oppure copia i pacchetti .xcarchive su un disco esterno prima di rimuoverli dal Mac.

iOS DeviceSupport: si può eliminare, viene ricopiato quando serve

Quando colleghi un iPhone, un iPad, un Apple Watch, una Apple TV o un Vision Pro per lo sviluppo, Xcode copia i simboli di sistema di quel dispositivo per poter fare debug e simbolizzazione sul Mac. Le versioni recenti di Xcode chiamano ogni cartella con il modello del dispositivo, la versione del sistema e la build, per esempio iPhone15,5 27.0.1 (24A446), e una singola cartella occupa spesso diversi gigabyte.

Ogni aggiornamento di iOS su ogni dispositivo su cui fai debug aggiunge una nuova cartella, e Xcode non rimuove quelle vecchie. Le cartelle delle versioni del sistema che non usi più si possono spostare nel Cestino senza rischi. Se ne elimini una che ti serve ancora, Xcode la copia di nuovo la prossima volta che colleghi quel dispositivo; ci vuole qualche minuto.

Simulatori: dispositivi e runtime sono cose diverse

Un runtime del simulatore è un’immagine di sistema completa per una versione del sistema operativo, come iOS 27.1, e occupa in genere 7–10 GB. Un dispositivo simulato è una piccola configurazione con i suoi dati: app installate, foto e impostazioni. Più dispositivi possono condividere lo stesso runtime, quindi eliminare un dispositivo libera i suoi dati, mentre eliminare un runtime libera l’immagine pesante.

Schema di un runtime del simulatore condiviso da più dispositivi simulati, con il comando simctl che rimuove ciascuno

Rimuovere i dispositivi simulati

Elenca i dispositivi e rimuovi quelli che non funzionano più con i runtime installati:

xcrun simctl list devices
xcrun simctl delete unavailable

delete unavailable rimuove i dispositivi che l’Xcode attuale non supporta più, di solito avanzi di runtime più vecchi. Per rimuovere un dispositivo specifico, passa il suo UDID preso dall’elenco: xcrun simctl delete <UDID>. Puoi farlo anche da Window › Devices and Simulators. Evita xcrun simctl delete all, a meno che tu non voglia davvero rimuovere tutti i simulatori con i loro dati. L’eliminazione di un dispositivo è definitiva; puoi crearne uno nuovo in Xcode in qualsiasi momento.

Rimuovere i runtime dei simulatori

xcrun simctl runtime list
xcrun simctl runtime delete <identifier>

runtime list mostra ogni immagine installata con versione, identificatore e stato, oltre alla dimensione totale. runtime delete accetta l’identificatore (l’UUID su ogni riga), smonta l’immagine e la rimuove. Da Xcode 27, delete accetta anche --dry-run per un’anteprima, --notUsedSinceDays <days>, --unusable e --outdated. Le versioni precedenti di Xcode supportano meno opzioni: esegui xcrun simctl runtime per vedere quelle accettate dalla tua.

In Xcode puoi fare lo stesso da Xcode › Settings › Components (che in Xcode 15 si chiama Platforms): seleziona un runtime ed eliminalo. La guida di Apple su come scaricare e installare componenti aggiuntivi di Xcode spiega come recuperarne uno, anche con xcodebuild -downloadPlatform iOS nel Terminale.

Non eliminare a mano i file dei runtime da /Library/Developer/CoreSimulator/Volumes o da /System/Library/AssetsV2. Le versioni recenti di Xcode archiviano i runtime come risorse gestite dal sistema, e rimuovere direttamente i file può lasciare un runtime registrato ma inutilizzabile.

Cloni di test, anteprime e cache dei simulatori

  • XCTestDevices: cloni che Xcode crea per i test in parallelo. Si possono spostare nel Cestino quando non ci sono test in corso.
  • Anteprime SwiftUI: Xcode esegue le anteprime in un proprio set di simulatori. xcrun simctl --set previews delete all li rimuove; Xcode li ricrea alla successiva anteprima.
  • Cache e log di CoreSimulator: ~/Library/Developer/CoreSimulator/Caches e ~/Library/Logs/CoreSimulator si possono svuotare senza rischi con l’app Simulator chiusa.

Vecchie versioni di Xcode, toolchain e download

Ogni copia di Xcode in /Applications è un’app di grandi dimensioni, e le copie beta o più vecchie tenute per un progetto legacy si sommano in fretta. Prima di eliminarne una, controlla quale Xcode usano gli strumenti da riga di comando:

xcode-select -p

Conserva la copia a cui punta quel percorso e qualsiasi versione che serva ancora a un job di CI o a un vecchio progetto. Controlla anche ~/Downloads alla ricerca di file .xip: una volta installato Xcode, l’archivio non serve più. Le toolchain Swift aggiuntive di swift.org si trovano in ~/Library/Developer/Toolchains; conserva quelle selezionate dai tuoi progetti.

~/Library/Caches/com.apple.dt.Xcode contiene la cache di Xcode e viene ricreata quando serve. Se usi Xcode da molti anni, potresti trovare anche set di documentazione offline scaricati da versioni molto vecchie di Xcode in ~/Library/Developer/Shared/Documentation/DocSets; le versioni attuali non li usano.

L’ordine giusto

  1. Chiudi Xcode e Simulator.
  2. Elimina DerivedData, XCTestDevices e i simulatori delle anteprime. Nessun rischio.
  3. Esegui xcrun simctl delete unavailable.
  4. Rimuovi le cartelle DeviceSupport e i runtime dei simulatori delle versioni del sistema che non supporti più.
  5. Verifica per ultimi, con calma, gli Archives e le vecchie copie di Xcode.

Alla fine svuota il Cestino per recuperare lo spazio. Le cartelle sono le stesse su macOS 27 Golden Gate, 26 Tahoe, 15 Sequoia e 14 Sonoma; le opzioni di simctl disponibili dipendono dalla versione di Xcode.

Come ti aiuta MoreRoom

La versione gratuita di MoreRoom scansiona ~/Library/Developer e riconosce ciascuna di queste cartelle, con un badge «Rimozione sicura» o «Da verificare» e l’indicazione se tornerà. DerivedData, DeviceSupport, i cloni di test e le cache vanno nel Cestino un elemento alla volta, con Annulla. Per i dispositivi e i runtime dei simulatori, MoreRoom esegue i comandi ufficiali di Apple xcrun simctl delete e xcrun simctl runtime delete; sono definitivi e vengono segnalati come tali. Gli Archives sono contrassegnati come da conservare.

MoreRoom Pro aggiunge il Raccoglitore, per fare pulizia di più elementi in un colpo solo, la modalità obiettivo, che sceglie la selezione più sicura per lo spazio che ti serve, e l’ibernazione dei progetti inattivi. Lo spostamento degli archivi su un disco esterno da MoreRoom è in arrivo; per ora, copiali tu.

Domande frequenti

Eliminare DerivedData rovina il mio progetto Xcode?

No. DerivedData contiene solo prodotti di build, indici e log generati da Xcode. Il codice sorgente e le impostazioni del progetto si trovano nella cartella del progetto. La build e l’indicizzazione successive richiedono più tempo, mentre Xcode ricrea i dati.

È sicuro eliminare gli Archives di Xcode?

Solo per le build che nessuno usa più. Ogni archivio contiene i file dSYM che trasformano gli indirizzi dei crash report in nomi di funzione. Conserva gli archivi di ogni versione ancora nelle mani degli utenti, oppure copiali prima su un altro disco.

Perché iOS DeviceSupport continua a ricomparire?

Xcode copia i simboli di debug da ogni dispositivo che colleghi per lo sviluppo, una volta per modello e versione del sistema. Se elimini la cartella di un dispositivo che usi ancora, Xcode la copia di nuovo la prossima volta che lo colleghi.

Posso semplicemente eliminare la cartella CoreSimulator?

Meglio di no. I dispositivi simulati e i runtime sono registrati presso il servizio CoreSimulator, e i runtime sono immagini disco di sistema montate. Usa xcrun simctl delete e xcrun simctl runtime delete, oppure le impostazioni di Xcode, così tutto resta coerente.

Come recupero un runtime del simulatore che ho eliminato?

Scaricalo di nuovo da Xcode › Settings › Components, oppure esegui xcodebuild -downloadPlatform iOS nel Terminale. Poi puoi ricreare i dispositivi simulati in Window › Devices and Simulators.

Cartelle citate in questa guida