Eliminare i vecchi runtime del simulatore iOS su Mac
I simulatori iOS di Xcode possono occupare silenziosamente gigabyte di spazio di archiviazione nel tempo. Ecco come recuperare quello spazio.
Lo spazio di Xcode è diviso tra runtime, dispositivi simulati, DerivedData, DeviceSupport e Archives. Sono vicini nel Finder, ma hanno gestione e costi di recupero diversi. Misura prima di eliminare.
Crea prima un inventario dello spazio Xcode
Apple consiglia di gestire le piattaforme aggiuntive nelle impostazioni Components di Xcode. Dopo aver verificato i dispositivi non disponibili, esegui:
xcrun simctl list runtimes
xcrun simctl list devices
| Tipo | Costo dopo la rimozione | Conservalo se |
|---|---|---|
| Runtime | Nuovo download e dispositivi dipendenti non disponibili | Serve al piano di test o alla riproduzione |
| Dispositivo virtuale | App, Portachiavi, database e stato di test eliminati | Devi ancora riprodurre un problema |
| DerivedData | Nuova build e indicizzazione | La build corrente lo usa |
| DeviceSupport | Possibile perdita del debug offline per un OS reale | Dispositivo o crash ancora rilevante |
| Archives | Possibile perdita del dSYM del build distribuito | Gli utenti eseguono ancora quella versione |
Perché i simulatori iOS occupano così tanto spazio
Un runtime è un’immagine di sistema iOS, watchOS, tvOS o visionOS scaricata. Un dispositivo simulato è un dispositivo virtuale che usa uno di questi runtime. Più dispositivi possono condividere la stessa immagine, quindi non sono la stessa cache.
Come eliminare i simulatori inutilizzati tramite Terminale
Elenca prima runtime e dispositivi in sola lettura.
Questi comandi non disinstallano i runtime. Controlla e rimuovi le immagini scaricate in Xcode > Settings > Components. Non cancellare direttamente le cartelle in /Library/Developer/CoreSimulator o /System/Library/AssetsV2.
Il più recente di ogni piattaforma attiva
Conserva il runtime più recente di una piattaforma sviluppata.
Una versione precedente necessaria per riprodurre un bug
Conserva questa versione se i test, la CI o l’analisi di un problema segnalato ne dipendono.
Rimuovere separatamente i dispositivi non disponibili
Dopo il controllo, questo comando elimina solo i record senza runtime. Non disinstalla alcun runtime.
xcrun simctl delete unavailable
Cancellare le cache dei simulatori e i dati delle app
Per azzerare lo stato di test di un dispositivo specifico, avvialo in Simulator e scegli Device > Erase All Content and Settings. Il runtime condiviso rimane, ma app, Portachiavi e database del dispositivo vengono eliminati.
Gestire separatamente DeviceSupport, DerivedData e Archives
DerivedData si può ricreare, ma una pulizia totale costringe tutti i progetti a ricompilarsi e reindicizzarsi. DeviceSupport può servire per dispositivi reali; Archives e dSYM di build distribuite possono servire per analizzare crash futuri. Mole elenca i runtime sostituiti e rimuove la selezione tramite simctl runtime delete. Gestisci dispositivi e archivi in Xcode.
Scegli DeviceSupport secondo dispositivi e crash
Una data vecchia non basta. Controlla quali dispositivi usi ancora e quali crash restano da analizzare.
Conserva gli Archives delle versioni usate
Conserva l’archivio di una versione ancora in uso, a meno che tu non abbia già altrove una copia verificata del dSYM e della build.
Una sequenza sicura e ripetibile
Chiudi Xcode, Simulator e le build, poi misura separatamente le cinque categorie. Rimuovi in Xcode i vecchi runtime confermati inutili, controlla i dispositivi e solo allora esegui xcrun simctl delete unavailable. Gestisci DerivedData per vecchio progetto, DeviceSupport secondo dispositivi e crash, Archives in Organizer secondo le versioni ancora distribuite. Misura di nuovo e fermati quando lo spazio basta.
Il limite di Mole
Mole rimuove solo runtime vecchi dichiarati eliminabili da Apple, mai stati dei dispositivi o archivi.
Domande frequenti
L'eliminazione di un simulatore cancellerà il codice del mio progetto?
Il codice sorgente resta intatto, ma le app e lo stato di test del dispositivo virtuale vengono eliminati.
È sicuro eliminare la cartella iOS DeviceSupport?
Non trattare tutto DeviceSupport come una cache. I dati di vecchie versioni possono servire per il debug o la simbolizzazione dei crash.
Mole trova i vecchi simulatori?
Mole elenca i runtime scaricati che sono stati sostituiti e rimuove quelli scelti con simctl. Non cancella a mano le altre cartelle CoreSimulator; svuota solo la cache di sistema rigenerabile /Library/Developer/CoreSimulator/Caches, e soltanto quando nessun simulatore è in esecuzione.