Pulire Xcode senza perdere gli artefatti di release
Xcode occupa spazio con file di compilazione, indici, archivi, dati di supporto dei dispositivi, simulatori e runtime scaricabili. Alcuni dati si possono ricreare; altri possono essere l'unica copia dell'archivio di una versione pubblicata o dei suoi dSYM. Misura ogni categoria, gestiscila tramite Xcode quando possibile e conserva gli artefatti delle build distribuite.
Dove finiscono i gigabyte di Xcode
Parti dalle due radici principali a livello utente:
du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator 2>/dev/null | sort -h
I soliti grandi consumatori di spazio sono:
- DerivedData: prodotti di build, indici e cache dei moduli, di solito una cartella per progetto. È ricostruibile, ma una pulizia completa rende costosi i successivi indici e le build. Parti prima dal progetto obsoleto.
- DeviceSupport: simboli e artefatti di supporto acquisiti per dispositivi fisici e versioni di OS. Le voci più vecchie possono ancora servire per la simbolizzazione dei crash.
- Archives: build salvate ogni volta che hai esportato o distribuito un'app. Apple consiglia di conservare l'archive per ogni build distribuita, perché i binari e i file dSYM corrispondenti possono essere necessari per diagnosticare crash successivi. Le archive di build che non hanno mai lasciato il Mac sono le candidate più sicure alla pulizia.
- Dispositivi simulati e runtime delle piattaforme: i dispositivi si trovano sotto CoreSimulator, mentre i runtime scaricabili sono gestiti come componenti di Xcode. Non sono un'unica cache.
Come svuotare ogni area in sicurezza
DerivedData conviene gestirla per progetto. Usa Xcode > Settings > Locations per individuare la cartella e verifica che sorgenti, toolchain e dipendenze siano disponibili per ricompilare. Interrompi le build e chiudi Xcode prima di spostare la cartella obsoleta nel Cestino. Cancella tutto solo quando un problema generale di indicizzazione o compilazione giustifica il tempo necessario a ricostruire i dati.
I simulatori non disponibili hanno un comando dedicato. Prima di usarlo, salva i dati di test che vuoi conservare:
xcrun simctl delete unavailable
Questo rimuove i record di dispositivi i cui runtime non sono disponibili; non disinstalla le immagini dei runtime. Usa Xcode > Settings > Components per ispezionare le piattaforme e i runtime del simulatore installati, con le dimensioni recuperabili, poi rimuovi i runtime che puoi scaricare di nuovo. La guida ai componenti di Xcode di Apple documenta lo stesso percorso di rimozione gestita. Usa Window > Devices and Simulators per i record dei dispositivi.
Rivedi le Archives in Window > Organizer. Conserva archive e dSYM per ogni build distribuita, comprese le versioni di produzione più vecchie ancora in uso. La guida alle informazioni di debug di Apple osserva che binari e dSYM funzionano insieme solo quando i loro UUID di build coincidono. Anche DeviceSupport merita una revisione selettiva, non una cancellazione indiscriminata.
Chiudi Xcode prima di spostare DerivedData, così indici e database di build non vengono interrotti a metà scrittura. Al prossimo avvio e alla prossima build attenditi re-indicizzazione, risoluzione delle dipendenze e ricreazione dell'output; la durata dipende dal progetto e da ciò che resta disponibile.
Dietro le quinte: dati ricreabili e artefatti da conservare
DerivedData è output riproducibile di build e indici. Per ogni progetto Xcode crea una cartella con un hash del percorso del progetto e la riempie di oggetti compilati, cache dei moduli, indici e prodotti di build derivati da sorgenti, impostazioni, toolchain e dipendenze. Eliminala e Xcode ricostruisce ciò che resta disponibile, il che può richiedere tempo e accesso di rete. DeviceSupport è diverso per natura: quando esegui il debug su un dispositivo fisico, Xcode acquisisce dati di supporto e simboli per quella build di OS. Anche i dispositivi del simulatore e le immagini dei runtime sono oggetti gestiti distinti, non semplici cartelle di cache. Le Archives sono l'insieme da conservare selettivamente, perché contengono i dSYM necessari per simbolizzare i report di crash delle build App Store. Sapere cosa è cache ricostruibile e cosa è un artefatto acquisito è l'intera linea tra ciò che è sicuro da cancellare e ciò che va tenuto.
Dove una mappa del disco aiuta
Una mappa del disco come la vista Analizza di Mole può mostrare se a occupare più spazio sono DerivedData, CoreSimulator o Archives. Usa le viste Components, Devices e Organizer di Xcode per gestire runtime, dispositivi e archivi delle versioni distribuite.
Un ordine di operazioni sicuro
Chiudi le build attive, misura Xcode e CoreSimulator separatamente, rimuovi la DerivedData obsoleta per progetto, elimina i simulatori non disponibili e disinstalla i runtime inutilizzati da Components. Rivedi le Archives rispetto alle versioni distribuite e alle esigenze di simbolizzazione prima di rimuoverle. Riapri un progetto importante ed esegui una build prima di svuotare il Cestino.