Xcode neden bu kadar yer kaplıyor ve alan nasıl geri alınır
Xcode'un kendisi büyüktür, ancak kullandığı alanın çoğu uygulamanın dışındadır: DerivedData içindeki derleme çıktısı, taktığınız her iOS sürümü için sembol dosyaları, simülatör aygıtları ve çalışma zamanları (runtime), bir de yayımladığınız her derlemenin arşivleri. Neredeyse hepsi ~/Library/Developer içinde durur ve çoğu yeniden oluşturulabilir.
Aşağıda tam klasörleri, her birini temizleyen komutu veya menüyü ve silmenin size neye mal olduğunu bulursunuz. Başlamadan önce Xcode'dan ve Simulator'dan çıkın.
Alanın nereye gittiğini görün
Bir şey silmeden önce ölçün. Bu komut, Xcode'un ve Simulator'ın Kitaplık klasörünüzde tuttuğu her klasörün boyutunu yazdırır. Yalnızca boyutları okur.
Çoğu geliştirici Mac'inde en üstteki girdiler CoreSimulator ve Xcode'dur; Xcode'un içinde ise en büyük klasörler DerivedData, iOS DeviceSupport ve Archives olur.
du -sh ~/Library/Developer/* ~/Library/Developer/Xcode/* 2>/dev/null | sort -hDerivedData: derleme çıktısı ve dizinler
Yol: ~/Library/Developer/Xcode/DerivedData. Xcode burada her proje veya çalışma alanı için bir klasör oluşturur; içinde derlenmiş nesneler, modül önbelleği, kod dizini, derleme günlükleri ve o proje için çektiği Swift paketleri bulunur. Çok önce sildiğiniz projelerin klasörleri geride kalır.
Silmesi en güvenli ve genellikle en büyük şey budur. Aşağıdaki komut, bütün projeler için DerivedData içindeki her şeyi siler. Klasörü Finder'da açıp yalnızca artık üzerinde çalışmadığınız projeleri de silebilirsiniz.
Bedeli: her projenin bir sonraki derlemesi tam derleme olur, Xcode kodu yeniden dizinler ve Swift paketleri yeniden çözümlenir. Ne kaynak kodu ne de ayar kaybedersiniz.
rm -rf ~/Library/Developer/Xcode/DerivedData/*DeviceSupport: taktığınız aygıtların sembolleri
Yol: ~/Library/Developer/Xcode/iOS DeviceSupport; watchOS, tvOS ve visionOS için benzer klasörler de vardır. Belirli bir işletim sistemi sürümünü çalıştıran bir aygıtı ilk bağladığınızda Xcode, aygıtta hata ayıklayabilmek ve çökme günlüklerini sembolleştirebilmek için o sürümün sistem sembollerini kopyalar. Her aygıttaki her işletim sistemi güncellemesi, her biri birkaç GB tutan bir klasör daha ekler ve Xcode eskileri hiç silmez.
Klasörü Finder'da açın ve artık çalıştırmadığınız sürümleri Çöp Sepeti'ne taşıyın. Klasör adları işletim sistemi sürümünü ve derleme numarasını içerir, bu yüzden hangilerinin eski olduğunu görmek kolaydır.
Bedeli: sildiğiniz bir sürümdeki aygıtı bağlarsanız Xcode sembolleri yeniden kopyalar; bu birkaç dakika sürer. Güncel aygıtlarınızın çalıştırdığı sürümleri saklayın.
Simülatör aygıtları ve önbellekleri
Yol: ~/Library/Developer/CoreSimulator/Devices. Her simülatör, o aygıtın eksiksiz bir veri kümesini tutan bir klasördür: kurulu uygulamalar, bunların belgeleri, fotoğraflar ve ayarlar. Xcode'u güncelledikten sonra, artık sahip olmadığınız çalışma zamanlarına ait simülatörler kullanılamayan aygıtlar olarak geride kalır. Aşağıdaki komut yalnızca bunları siler.
Sakladığınız simülatörleri sıfırlamak için xcrun simctl erase all, her simülatörün içeriğini ve ayarlarını siler ama aygıtları yerinde bırakır. Bedeli: o simülatörlerin içindeki bütün uygulamalar ve test verileri.
~/Library/Developer/CoreSimulator/Caches, Simulator'ın her çalışma zamanı için oluşturduğu önbellekleri tutar. Simulator kapalıyken silmek güvenlidir. Bedeli: önbellek yeniden oluşturulurken her simülatörün bir sonraki başlatılması daha yavaş olur.
xcrun simctl delete unavailableEski simülatör çalışma zamanları
Çalışma zamanı, belirli bir iOS sürümü gibi, simüle edilen işletim sisteminin kendisidir. Her biri birkaç GB'tır ve yeni Xcode sürümleri kurdukça birikirler. Ana klasörünüzde değil, sistem genelindeki /Library/Developer/CoreSimulator içinde saklanırlar ve elle değil, Xcode veya simctl üzerinden silinmelidirler.
Xcode'da Settings'i açın ve Components'ı seçin (Xcode 15'te adı Platforms'tur). Artık test etmediğiniz bir çalışma zamanını seçin ve silin. Terminal'den, aşağıdaki komut kurulu çalışma zamanlarını tanıtıcılarıyla listeler; xcrun simctl runtime delete ve ardından bir tanıtıcı ise birini siler.
Bedeli: çalışma zamanını yeniden indirene kadar o işletim sistemi sürümü için simülatör çalıştıramazsınız ve bu büyük bir indirmedir.
xcrun simctl runtime listArchives: silmeden önce düşünün
Yol: ~/Library/Developer/Xcode/Archives. Product'ı, sonra Archive'ı her seçtiğinizde Xcode, derlenmiş uygulamayı hata ayıklama sembolleriyle (dSYM dosyaları) birlikte saklar. Arşivler tarihe göre klasörlerde gruplanır.
Onları Xcode'un Organizer penceresinden yönetin: Window'u, sonra Organizer'ı seçin, Archives'ı seçin, bir arşive sağ tıklayın ve silin.
Bedeli: birebir yeniden oluşturamayacağınız tek öğe budur. O derlemeden gelen çökme raporlarını sembolleştirmek için arşivin dSYM dosyalarına, onu dışa aktarmanız veya yeniden göndermeniz gerekirse de arşivin kendisine ihtiyacınız olur. Hâlâ yayında olan sürümlerin arşivlerini saklayın, eski geliştirme ve test derlemelerini silin.
Swift paket önbellekleri ve önizlemeler
Swift Package Manager, klonladığı depoların ortak bir önbelleğini ~/Library/Caches/org.swift.swiftpm içinde tutar. Aşağıdaki komut, herhangi bir paket klasörünün içinden çalıştırıldığında onu boşaltır. Bedeli: paketler bir sonraki çözümlemede yeniden indirilir.
SwiftUI önizlemeleri, ~/Library/Developer/Xcode/UserData/Previews içinde saklanan kendi simülatör kümesinde çalışır. Onları silmek için xcrun simctl --set previews delete all çalıştırın. Bedeli: Xcode aygıtı yeniden oluştururken bir sonraki önizlemenin görünmesi daha uzun sürer.
CocoaPods veya Carthage kullanıyorsanız bunların Xcode klasörlerinin dışında kendi önbellekleri vardır.
swift package purge-cacheDiskzy Xcode kalıntılarını nasıl ele alır
Diskzy'nin Clean up (Temizlik) sekmesi bu klasörleri bulur ve her biri için gerekçesini göstererek bir varsayılan belirler. Xcode açık olmadığı sürece DerivedData işaretlidir. DeviceSupport için en yeni iki sürüm tutulur, daha eskileri işaretlenir. CoreSimulator Caches işaretlidir. CoreSimulator Devices işaretsizdir, çünkü bunlar simülatörleriniz ve uygulama verileridir. Archives listelenir ama işaretsizdir; böylece yeniden göndermeniz gerekebilecek olanları saklarsınız.
Diskzy'nin sildiği her şey Çöp Sepeti'ne gider, yani siz boşaltana kadar hiçbir şey yok olmaz. macOS 15 Sequoia veya sonrası için yerel bir Mac uygulamasıdır; her şey açık olarak 72 saat ücretsizdir, sonra 2 Mac için tek seferlik 9 $.
Sık sorulan sorular
- Xcode DerivedData'yı silmek güvenli mi?
- Evet. Yalnızca Xcode'un yeniden ürettiği derleme çıktısını, dizinleri ve günlükleri içerir. Hiçbir şey önbellekte olmadığı için her projenin bir sonraki derlemesi daha uzun sürer.
- iOS DeviceSupport klasörünü silebilir miyim?
- Evet. Xcode, o işletim sistemi sürümünü çalıştıran bir aygıtı bir sonraki bağlayışınızda sembolleri yeniden kopyalar. Güncel aygıtlarınızın kullandığı sürümleri saklamak mantıklıdır.
- xcrun simctl delete unavailable ne yapar?
- Çalışma zamanı artık kurulu olmayan simülatör aygıtlarını siler; bunlar genellikle eski Xcode sürümlerinden kalanlardır. Hâlâ çalıştırabildiğiniz simülatörlere dokunulmaz.
- Xcode arşivlerini silmeli miyim?
- Yalnızca artık ihtiyacınız olmayanları. Bir arşiv, o derlemenin çökme raporlarını sembolleştirmek için kullanılan hata ayıklama sembollerini tutar; bu yüzden müşterilerinizin hâlâ kullandığı sürümlerin arşivlerini saklayın.
- Xcode temizledikten sonra neden yeniden yer kaplıyor?
- DerivedData ve simülatör önbellekleri, bir projeyi derleyip çalıştırdığınız anda yeniden oluşur. Bu beklenen bir şeydir: kazanç, eski projelerin, eski işletim sistemi sürümlerinin ve kullanılmayan simülatörlerin verilerini silmekten gelir.
İlgili rehberler
- DerivedData~/Library/Developer/Xcode/DerivedData
- iOS DeviceSupport~/Library/Developer/Xcode/iOS DeviceSupport
- CoreSimulator Devices~/Library/Developer/CoreSimulator/Devices
- CoreSimulator Caches~/Library/Developer/CoreSimulator/Caches
- Xcode Archives~/Library/Developer/Xcode/Archives
Kaldırma rehberleri
Mac'inizdeki alanın nereye gittiğini görün
Diskzy diskinizin haritasını çıkarır, Sistem Verileri'ni açıklar ve güvenli olanı temizler. 72 saat ücretsiz, sonra 2 Mac için tek seferlik 9 $.
Diskzy'yi ücretsiz deneyin