Cara mencopot Xcode sepenuhnya di Mac tanpa kehilangan proyek atau dSYM
Tim AskClean · Diperbarui 2026-09-01
Sebelum mencopot Xcode sepenuhnya, cadangkan proyek sumber dan simpan Archives serta dSYM yang masih dibutuhkan build yang didistribusikan. Setelah itu pindahkan aplikasi ke Trash dan tinjau DerivedData, simulator, DeviceSupport, dan alat baris perintah secara terpisah.

Lindungi data yang tidak dapat dibuat ulang sebelum mencopot
Folder proyek bukan sisa Xcode. Lindungi repositori, berkas yang belum di-commit, paket lokal, dan aset. Simpan Archives/dSYM untuk versi yang masih aktif di App Store, TestFlight, atau lingkungan pelanggan, serta status Simulator yang penting.
- Tutup Xcode lebih dulu. Menghapus DerivedData saat Xcode berjalan bisa membuat pengindeksnya kebingungan, dan berkas yang sedang dibuka Xcode mungkin tak terhapus bersih.
- Temukan foldernya: di Xcode, buka Settings > Locations, lalu klik panah kecil di sebelah jalur DerivedData untuk menampilkannya di Finder. Atau di Finder tekan Command-Shift-G dan masukkan ~/Library/Developer/Xcode/DerivedData langsung.
- Urutkan subfolder proyek berdasarkan ukuran, pilih yang ingin Anda singkirkan (atau Command-A untuk semuanya), lalu pindahkan ke Sampah. Ke Sampah dulu adalah kebiasaan yang lebih aman — Anda bisa memulihkannya seketika bila berubah pikiran.
- Lewat Terminal sebagai gantinya: rm -rf ~/Library/Developer/Xcode/DerivedData menghapus semuanya sekali jalan. Ini lebih cepat daripada Finder untuk folder yang sangat besar, tetapi baca catatan di bawah sebelum memakainya.
- Buka kembali Xcode dan lakukan build. Bersiaplah build pertama tiap proyek berjalan jauh lebih lama, dan "Indexing" tampil di bar aktivitas untuk beberapa saat — keduanya ongkos sekali bayar.
Hati-hati dengan rm -rf: ia melewati Sampah dan menghapus permanen, tanpa bisa dibatalkan. Ketik jalurnya persis, jangan pernah menjalankannya dengan sudo untuk tugas ini, dan bila Anda tak nyaman di Terminal, jalur Finder mengerjakan hal yang sama secara terpulihkan.
Hapus DerivedData
Ada tiga cara melakukannya, dan hasil akhirnya sama. Perintah Clean Build Folder di Xcode (Product > Clean Build Folder, atau Command-Shift-K) hanya membersihkan hasil build proyek yang sedang terbuka — berguna untuk memperbaiki build yang aneh, tetapi nyaris tak menggerakkan jarum ruang disk. Untuk mendapatkan ruang yang sesungguhnya, hapus folder-folder DerivedData itu sendiri.
Menghapus per proyek adalah opsi bedahnya: pertahankan DerivedData untuk dua-tiga proyek yang Anda build tiap hari, dan buang folder milik yang lainnya. Menghapus seluruhnya adalah opsi cepat, dan itu juga tak masalah — Anda hanya membayar ongkos build-ulang penuh untuk semua proyek sekaligus.
Copot aplikasi dengan metode pemasangan asal
Keluar dari Xcode dan Simulator, lalu pindahkan Xcode.app yang benar ke Trash lewat Finder. Jangan otomatis menghapus /Library/Developer/CommandLineTools; Git, Homebrew, clang, dan skrip build mungkin masih memakainya.
Cache manajer paket (SwiftPM, CocoaPods, npm, Homebrew)
Manajer paket menyimpan setiap dependensi yang pernah diunduh agar pemasangan berikutnya cepat. Itu rekayasa yang bagus sekaligus higiene disk yang buruk: cache-nya hanya bisa tumbuh, dan di mesin yang sudah melewati beberapa tahun proyek, diam-diam totalnya mencapai 10-20 GB. Semuanya aman dibersihkan — skenario terburuknya, pemasangan berikutnya mengunduh ulang paket.
Swift Package Manager menyimpan cache paket unduhannya di ~/Library/Caches/org.swift.swiftpm, dan checkout terselesaikan tiap proyek juga berada di dalam folder DerivedData-nya — jadi membersihkan DerivedData sudah sekaligus membersihkan itu. Cache bersamanya bisa Anda hapus dari Finder, atau dengan rm -rf pada jalur tersebut.
Verifikasi sebelum mengosongkan Trash
Periksa kembali Applications, proses, dan xcode-select -p. Pastikan proyek, Archives/dSYM yang diperlukan, dan data Simulator tetap ada sebelum mengosongkan Trash. System Data dapat terlambat diperbarui.
Peta keamanan penghapusan lengkap
Hapus Xcode dengan memisahkan cache yang dapat dibuat ulang dari Archives, DeviceSupport, data Simulator, dan Command Line Tools.
| Keputusan | Lokasi pemeriksaan atau tindakan | Dampak dan verifikasi |
|---|---|---|
| Lindungi data yang tidak dapat dibuat ulang sebelum mencopot | Projects / Xcode Organizer / Archives | Folder proyek bukan sisa Xcode. Lindungi repositori, berkas yang belum di-commit, paket lokal, dan aset. Simpan Archives/dSYM untuk versi yang masih aktif di App Store, TestFlight, atau lingkungan pelanggan, serta status Simulator yang penting. |
| Copot aplikasi dengan metode pemasangan asal | /Applications/Xcode.app / Finder | Keluar dari Xcode dan Simulator, lalu pindahkan Xcode.app yang benar ke Trash lewat Finder. Jangan otomatis menghapus /Library/Developer/CommandLineTools; Git, Homebrew, clang, dan skrip build mungkin masih memakainya. |
| Verifikasi sebelum mengosongkan Trash | xcode-select -p / Activity Monitor | Periksa kembali Applications, proses, dan xcode-select -p. Pastikan proyek, Archives/dSYM yang diperlukan, dan data Simulator tetap ada sebelum mengosongkan Trash. System Data dapat terlambat diperbarui. |
FAQ
Bolehkah saya menghapus seluruh ~/Library/Developer?
Tidak. Folder itu mencampur DerivedData yang dapat dibuat ulang dengan Archives/dSYM, DeviceSupport, runtime, dan status Simulator; nilai setiap kategori secara terpisah.
Apakah aman menghapus DerivedData?
Ya — ini salah satu penghapusan besar teraman di Mac. DerivedData hanya berisi berkas yang dihasilkan Xcode dari kode sumber Anda: hasil build, cache modul, indeks, dan log. Kode, berkas proyek, dan riwayat git Anda berada di tempat lain dan tak pernah terpengaruh. Satu-satunya konsekuensi adalah build berikutnya tiap proyek berupa build ulang penuh dan pengindeksan berjalan lagi.
Seberapa sering saya harus membersihkan DerivedData?
Tak ada jadwal wajib — bersihkan saat ukurannya sudah cukup berarti, yang bagi kebanyakan pengembang aktif berarti tiap satu-dua bulan. Dua momen selalu membenarkannya: saat Anda butuh ruang disk cepat, dan saat sebuah proyek menunjukkan galat build yang tak bisa dijelaskan atau pelengkapan kode yang basi, di mana menghapus DerivedData adalah perbaikan pertama yang standar.
Sumber