AskCleanAskClean

Padamkan DerivedData Xcode & Cache Pembangun dengan Selamat

AskClean Team · Updated 2026-07-18

DerivedData ialah folder kerja Xcode untuk produk binaan dan indeks, dan ia boleh membesar secara senyap sehingga berpuluh-puluh gigabait. Ia selamat dipadam: tutup Xcode, buang kandungan ~/Library/Developer/Xcode/DerivedData, dan Xcode membina semuanya semula pada binaan seterusnya. Panduan ini merangkumi itu, ditambah simulator, arkib dan cache pakej.

Apakah DerivedData dan mengapa ia jadi begitu besar

DerivedData ialah tempat Xcode menyimpan segala yang diterbitkannya daripada kod sumber anda: objek binaan perantaraan, produk terkompil, cache modul, indeks simbol untuk pelengkapan kod dan lompat-ke-definisi, serta log binaan. Ia berada di ~/Library/Developer/Xcode/DerivedData secara lalai, dengan satu subfolder bagi setiap projek atau ruang kerja yang pernah anda buka.

Ia membesar atas sebab struktur: Xcode mencipta folder DerivedData untuk setiap projek yang anda buka — termasuk klon sekali guna yang anda bina sekali dan tidak pernah sentuh lagi — dan ia tidak pernah memadamkan mana-mana satu pun. Setiap folder menyimpan produk binaan berasingan bagi setiap konfigurasi dan destinasi (Debug dan Release, simulator dan peranti), jadi satu projek bersaiz sederhana boleh memakan beberapa gigabait, dan folder itu keseluruhannya lazim mencecah 20-50 GB pada mesin pembangunan yang aktif.

Segala isinya boleh dijana semula mengikut takrifnya — itulah makna "derived". Memadamkan DerivedData tidak sekali-kali menyentuh kod sumber anda, tetapan projek anda, atau apa-apa di bawah kawalan versi. Satu-satunya kos ialah masa: binaan seterusnya bagi setiap projek ialah binaan bersih penuh, dan pengindeksan berjalan semula di latar belakang selama beberapa minit.

Padamkan DerivedData

Ada tiga cara untuk melakukannya, dan semuanya berakhir di tempat yang sama. Arahan Clean Build Folder Xcode (Product > Clean Build Folder, atau Command-Shift-K) hanya mengosongkan produk binaan untuk projek yang sedang dibuka — berguna untuk membaiki binaan yang pelik, tetapi hampir tidak menggerakkan jarum ruang cakera. Untuk menuntut semula ruang sebenar, padamkan folder DerivedData itu sendiri.

Memadam mengikut projek ialah pilihan yang tepat sasaran: kekalkan DerivedData untuk dua tiga projek yang anda bina setiap hari, dan buang folder untuk yang selebihnya. Memadam keseluruhannya ialah pilihan pantas, dan itu pun tidak mengapa — cuma anda membayar kos binaan semula penuh pada semua projek sekali gus.

  1. Tutup Xcode dahulu. Memadamkan DerivedData semasa Xcode berjalan boleh membuatkan pengindeksnya keliru, dan fail yang sedang dibuka Xcode mungkin tidak terpadam dengan bersih.
  2. Cari foldernya: dalam Xcode, buka Settings > Locations, dan klik anak panah kecil di sebelah laluan DerivedData untuk mendedahkannya dalam Finder. Atau dalam Finder tekan Command-Shift-G dan masukkan ~/Library/Developer/Xcode/DerivedData secara terus.
  3. Isih subfolder projek mengikut saiz, pilih yang ingin anda buang (atau Command-A untuk semuanya), dan alihkannya ke Tong Sampah. Tong Sampah dahulu ialah tabiat yang lebih selamat — anda boleh memulihkan serta-merta jika berubah fikiran.
  4. Melalui Terminal pula: rm -rf ~/Library/Developer/Xcode/DerivedData memadamkan segalanya sekali gus. Ia lebih pantas daripada Finder untuk folder yang sangat besar, tetapi baca nota di bawah sebelum menggunakannya.
  5. Buka semula Xcode dan bina. Jangkakan binaan pertama setiap projek mengambil masa yang ketara lebih lama, dan jangkakan "Indexing" berjalan dalam bar aktiviti buat seketika — kedua-duanya kos sekali sahaja.

Berhati-hati dengan rm -rf: ia memintas Tong Sampah dan memadam secara kekal, tanpa boleh buat asal. Taip laluan dengan tepat, jangan sekali-kali menjalankannya dengan sudo untuk tugas ini, dan jika anda tidak selesa dalam Terminal, laluan Finder melakukan kerja yang sama secara boleh pulih.

Kosongkan runtime simulator lama

Simulator biasanya pemakan ruang pembangun kedua terbesar selepas DerivedData. Setiap runtime iOS, watchOS atau tvOS yang pernah anda muat turun memakan 5-8 GB, dan setiap peranti simulasi menyimpan folder datanya sendiri di bawah ~/Library/Developer/CoreSimulator/Devices. Jika anda telah melalui beberapa naik taraf Xcode, besar kemungkinan anda mempunyai runtime untuk versi iOS yang berhenti anda sasarkan bertahun-tahun lalu.

Kemenangan terpantas ialah arahan pembersihan terbina dalam: jalankan xcrun simctl delete unavailable dalam Terminal. Ia memadamkan setiap peranti simulator yang runtimenya tidak lagi dipasang — anak yatim yang ditinggalkan versi Xcode lama — dan tidak menyentuh apa-apa yang masih boleh anda gunakan.

Untuk runtime itu sendiri, buka Settings > Platforms dalam Xcode (dipanggil Components dalam versi Xcode lebih lama). Anda akan melihat setiap runtime simulator yang dipasang berserta saiznya; pilih yang lama dan padamkannya. Simpan hanya runtime terkini bagi setiap platform melainkan anda aktif menguji pada versi OS lebih lama.

Anda juga boleh memangkas peranti simulasi individu dalam Window > Devices and Simulators: beralih ke tab Simulators, klik kanan mana-mana peranti yang tidak pernah anda gunakan — enam model iPhone pendua dengan data daripada larian ujian lama — dan pilih Delete. Data tersimpan dan aplikasi setiap peranti turut hilang bersamanya.

Arkib, fail sokongan peranti dan cache

Arkib terkumpul di ~/Library/Developer/Xcode/Archives setiap kali anda menjalankan Product > Archive untuk mengedarkan binaan. Setiap arkib mengandungi binaan aplikasi penuh berserta simbol nyahpepijat dSYM-nya, selalunya 100 MB hingga 1 GB setiap satu. Sebelum memadam, fahami tukarannya: dSYM di dalamnya ialah apa yang membolehkan anda mensimbolikasikan laporan ranap untuk binaan tepat itu. Simpan arkib untuk versi yang masih aktif di App Store atau TestFlight (atau pastikan App Store Connect memiliki dSYM tersebut), dan padamkan yang selebihnya — laluan paling selamat ialah Organizer Xcode (Window > Organizer > Archives), tempat anda boleh menyemak dan memadamkannya dengan konteks.

iOS DeviceSupport, di ~/Library/Developer/Xcode/iOS DeviceSupport, menyimpan simbol penyahpepijatan yang disalin Xcode daripada setiap iPhone atau iPad fizikal yang pernah anda sambungkan — satu folder bagi setiap versi iOS, lazimnya 2-5 GB setiap satu. Folder untuk versi iOS yang tidak lagi dijalankan mana-mana peranti anda hanyalah beban mati: padamkannya, dan jika anda menyambungkan peranti dengan versi itu semula, Xcode hanya menyalin semula simbolnya (anda akan melihat "Preparing debugger support" sekali). Folder serupa turut wujud untuk peranti watchOS dan tvOS.

Xcode juga menyimpan cachenya sendiri di bawah ~/Library/Caches/com.apple.dt.Xcode, dan simulator menyimpan cache mereka dalam ~/Library/Developer/CoreSimulator/Caches — kedua-duanya selamat dikosongkan apabila Xcode dan aplikasi Simulator tidak berjalan, dan kedua-duanya dibina semula mengikut keperluan.

Cache pengurus pakej (SwiftPM, CocoaPods, npm, Homebrew)

Pengurus pakej menyimpan setiap kebergantungan yang pernah dimuat turunnya supaya pemasangan akan datang pantas. Itu kejuruteraan yang baik tetapi kebersihan cakera yang buruk: cache hanya membesar, dan pada mesin yang telah melalui beberapa tahun projek ia diam-diam terkumpul sehingga 10-20 GB. Semuanya selamat dikosongkan — senario terburuk hanyalah pemasangan seterusnya memuat turun semula pakej.

Swift Package Manager menyimpan pakej yang dimuat turun di ~/Library/Caches/org.swift.swiftpm, dan checkout yang diselesaikan bagi setiap projek turut berada di dalam folder DerivedData projek itu — jadi mengosongkan DerivedData sudah mengosongkan yang itu. Cache kongsi boleh anda padamkan daripada Finder, atau dengan rm -rf pada laluan tersebut.

CocoaPods menyimpan pod yang dimuat turunnya di ~/Library/Caches/CocoaPods. Cara bersih untuk mengosongkannya ialah arahan terbina dalam: pod cache clean --all. Folder Pods projek anda tidak disentuh; hanya cache muat turun yang hilang.

Cache npm berada di ~/.npm dan boleh mencecah banyak gigabait pada mesin yang sarat JavaScript. Jalankan npm cache clean --force untuk mengosongkannya (npm mendesak bendera itu kerana cachenya pulih sendiri dan lazimnya tidak perlu dibersihkan — memadamkannya tetap selamat sepenuhnya). Pengguna pnpm boleh menjalankan pnpm store prune sebagai gantinya.

Homebrew menyorok muat turun lama dan versi pakej yang usang. brew cleanup membuang versi usang dan muat turun basi; brew cleanup --prune=all turut mengosongkan keseluruhan cache muat turun. Jalankan brew cleanup -n dahulu jika anda mahukan senarai larian percubaan tentang apa yang akan dibuang.

Automasikannya

Semua di atas berkesan, tetapi sisa pembangun ialah kitaran tanpa henti: DerivedData kembali dalam masa seminggu kerja biasa, cache terisi semula, dan setiap kemas kini Xcode meninggalkan satu lagi runtime terkandas. Jika anda tidak mahu mengulangi enam prosedur manual setiap bulan, inilah bahagian yang berbaloi diautomasikan — dengan alat yang menunjukkan penaakulannya dan bukan memadam pukal secara senyap.

AskClean melayan fail pembangun sebagai kategori kelas pertama: satu imbasan memperincikan DerivedData Xcode mengikut projek, runtime simulator lama (dibaca melalui simctl, menyimpan yang terkini bagi setiap platform), fail sokongan peranti, dan cache pengurus pakej untuk npm, SwiftPM, cargo, uv dan banyak lagi. Ia turut menangkap pemakan ruang yang lebih baharu — cache model Hugging Face dan Ollama — yang disenaraikannya mengikut model dan dibiarkan tidak ditanda secara lalai.

Setiap item disertakan penjelasan — apakah ia, bolehkah ia dibina semula, apakah kos memadamnya — dan tiada apa yang berjalan selagi anda belum mengesahkannya. Pemadaman masuk ke Tong Sampah supaya klik yang tersilap boleh dibuat asal dengan sekadar seret dan lepas, dan kod sumber, dokumen serta foto anda tidak sekali-kali disentuh. Ia senarai semak yang sama dengan panduan ini, tolak sejam kerja Terminal.

FAQ

Adakah selamat memadamkan DerivedData?

Ya — ia antara pemadaman besar paling selamat pada Mac. DerivedData hanya mengandungi fail yang dijana Xcode daripada sumber anda: produk binaan, cache modul, indeks dan log. Kod, fail projek dan sejarah git anda berada di tempat lain dan tidak sekali-kali terjejas. Satu-satunya akibat ialah binaan seterusnya bagi setiap projek ialah binaan semula penuh dan pengindeksan berjalan semula.

Berapa kerap patut saya mengosongkan DerivedData?

Tiada jadual yang diwajibkan — kosongkannya apabila ia cukup besar untuk diambil kira, iaitu setiap satu dua bulan bagi kebanyakan pembangun aktif. Dua saat sentiasa mewajarkannya: apabila anda perlukan ruang cakera segera, dan apabila projek menunjukkan ralat binaan yang tidak dapat dijelaskan atau pelengkapan kod yang basi, di mana pengosongan DerivedData ialah pembaikan pertama yang standard.

Adakah Xcode akan menjadi lebih perlahan selepas saya memadamkan DerivedData?

Buat sementara waktu, ya. Binaan pertama setiap projek ialah binaan bersih, yang boleh mengambil masa beberapa kali ganda lebih lama daripada binaan tokokan, dan pengindeksan latar belakang memerlukan beberapa minit sebelum pelengkapan kod dan carian pulih sepenuhnya. Selepas kitaran pertama itu, prestasi kembali seperti sedia kala — DerivedData menyimpan cache, bukan pengoptimuman yang hilang secara kekal.

Bagaimana pula dengan ~/Library/Developer/CoreSimulator — bolehkah saya memadamkannya?

Jangan secara membuta tuli — ia menyimpan simulator yang sedang dipasang berserta datanya, dan memadamkannya secara borong merosakkannya sehingga anda memasang semula runtime. Pangkas dengan betul sebaliknya: jalankan xcrun simctl delete unavailable untuk peranti yatim, buang runtime lama dalam Settings > Platforms Xcode, padamkan peranti tidak digunakan dalam Devices and Simulators, dan kosongkan hanya subfolder Caches secara manual.

Adakah Clean Build Folder melakukan perkara yang sama?

Tidak. Product > Clean Build Folder (Command-Shift-K) mengosongkan produk binaan untuk projek semasa sahaja, dan meninggalkan indeks, cache modul dan folder setiap projek lain di tempatnya. Ia alat penyelesaian masalah binaan, bukan alat ruang cakera — menuntut semula ruang sebenar bermakna memadamkan folder DerivedData itu sendiri.

Sources