Padam DerivedData Xcode dan cache pembangun dengan selamat
Pasukan AskClean · Dikemas kini 2026-11-02
DerivedData ialah folder kerja sementara Xcode untuk produk binaan dan indeks, dan saiznya boleh membesar secara senyap sehingga berpuluh-puluh gigabait. Folder ini selamat dipadam: keluar daripada Xcode, buang kandungan ~/Library/Developer/Xcode/DerivedData, dan Xcode akan membina semula semuanya pada binaan seterusnya. Panduan ini merangkumi langkah itu, serta simulator, arkib dan cache pakej.

Apakah DerivedData dan mengapa saiznya begitu besar
DerivedData ialah tempat Xcode menyimpan segala yang dijana daripada kod sumber anda: objek binaan perantaraan, produk terkompil, cache modul, indeks simbol untuk pelengkapan kod dan jump to definition, serta log binaan. Secara lalai, folder ini berada di ~/Library/Developer/Xcode/DerivedData, dengan satu subfolder bagi setiap projek atau ruang kerja yang pernah anda buka.
Saiznya membesar kerana cara Xcode berfungsi: Xcode mencipta folder DerivedData bagi setiap projek yang anda buka — termasuk klon sekali guna yang anda bina sekali lalu tidak anda sentuh lagi — dan tidak membuangnya secara proaktif. Setiap folder menyimpan produk binaan berasingan bagi setiap konfigurasi dan destinasi (Debug dan Release, simulator dan peranti), jadi ukur subfolder projek itu dahulu dan jangan mengandaikan berapa banyak ruang yang akan diperoleh semula pada Mac anda.
Segala isinya boleh dijana semula — itulah maksud “derived” (terbitan). Memadam DerivedData tidak sekali-kali menyentuh kod sumber, tetapan projek atau apa-apa yang berada di bawah kawalan versi. Satu-satunya kos ialah masa: binaan seterusnya bagi setiap projek menjadi binaan bersih penuh, dan pengindeksan berjalan semula di latar belakang selama beberapa minit.
Padam DerivedData
Perintah Clean Build Folder dalam Xcode (Product > Clean Build Folder, atau Shift-Command-K) hanya mengosongkan produk binaan bagi projek yang sedang dibuka — berguna untuk membaiki binaan yang bermasalah, tetapi hampir tidak menjimatkan ruang cakera. Untuk mendapatkan semula ruang yang sebenar, padam folder DerivedData itu sendiri: paparkannya melalui tetapan Locations dalam Xcode, buka folder itu dalam Finder, atau buangnya melalui Terminal. Ketiga-tiga cara membawa hasil yang sama.
Memadam mengikut projek ialah pilihan yang tepat sasaran: kekalkan DerivedData bagi dua atau tiga projek yang anda bina setiap hari, dan buang folder projek yang lain. Memadam keseluruhannya ialah pilihan pantas, dan itu juga tidak mengapa — cuma anda menanggung kos binaan semula penuh bagi semua projek serentak.
- Keluar daripada Xcode dahulu. Memadam DerivedData semasa Xcode berjalan boleh mengelirukan pengindeksnya, dan fail yang sedang dibuka oleh Xcode mungkin tidak terpadam dengan sempurna.
- Cari folder itu: dalam Xcode, buka Settings > Locations, kemudian klik anak panah kecil di sebelah laluan DerivedData untuk memaparkannya dalam Finder. Atau, dalam Finder, tekan Command-Shift-G dan masukkan terus ~/Library/Developer/Xcode/DerivedData.
- Isih subfolder projek mengikut saiz, pilih folder yang ingin dibuang (atau tekan Command-A untuk memilih semuanya), kemudian alihkannya ke Sampah. Mengalihkan ke Sampah dahulu ialah tabiat yang lebih selamat — anda boleh memulihkannya serta-merta jika berubah fikiran.
- Jika menggunakan Terminal: rm -rf ~/Library/Developer/Xcode/DerivedData memadam segala-galanya sekali gus. Cara ini lebih pantas daripada Finder bagi folder yang sangat besar, tetapi baca nota di bawah sebelum menggunakannya.
- Buka semula Xcode dan bina projek. Jangkakan binaan pertama setiap projek mengambil masa yang jauh lebih lama, dan “Indexing” berjalan dalam bar aktiviti untuk seketika — kedua-duanya kos sekali sahaja.
Berhati-hati dengan rm -rf: perintah ini memintas Sampah dan memadam secara kekal, tanpa cara untuk membatalkannya. Taip laluan dengan tepat, jangan sekali-kali menjalankannya dengan sudo untuk tugas ini, dan jika anda kurang selesa menggunakan Terminal, kaedah Finder melakukan kerja yang sama dan masih boleh dipulihkan.
Buang runtime simulator lama
Simulator selalunya satu lagi kategori besar dalam storan pembangun. Setiap runtime iOS, watchOS atau tvOS yang dimuat turun mempunyai saiznya sendiri, dan setiap peranti simulasi menyimpan data di bawah ~/Library/Developer/CoreSimulator/Devices. Jika anda telah beberapa kali menaik taraf Xcode, semak runtime bagi versi OS yang sudah tidak lagi termasuk dalam matriks ujian anda.
Langkah paling cepat ialah perintah pembersihan terbina dalam: jalankan xcrun simctl delete unavailable dalam Terminal. Perintah ini memadam setiap peranti simulator yang bertanda unavailable — kebanyakannya peranti yatim yang ditinggalkan oleh runtime yang telah dibuang dan versi Xcode lama — berserta aplikasi dan data di dalamnya. Semak senarainya dahulu dengan xcrun simctl list devices, terutamanya jika anda memasang lebih daripada satu versi Xcode.
Untuk runtime itu sendiri, buka Settings > Components dalam Xcode (dipanggil Platforms dalam Xcode 14–15). Anda akan melihat setiap runtime simulator yang dipasang berserta saiznya; pilih runtime lama dan padamkannya. Simpan hanya runtime terkini bagi setiap platform melainkan anda masih aktif menguji pada versi OS yang lebih lama.
Anda juga boleh membuang peranti simulasi satu per satu dalam Window > Devices and Simulators: beralih ke tab Simulators, klik kanan mana-mana peranti yang tidak pernah digunakan — misalnya enam peranti iPhone yang sama modelnya, lengkap dengan data ujian lama — dan pilih Delete. Data tersimpan dan aplikasi peranti itu turut dipadam 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, selalunya 100 MB hingga 1 GB setiap satu. Sebelum memadam, fahami kesannya: dSYM di dalamnya membolehkan anda melakukan simbolikasi laporan ranap bagi binaan tepat itu. Simpan arkib bagi versi yang masih aktif di App Store atau TestFlight (atau pastikan App Store Connect sudah mempunyai dSYM tersebut), dan padam yang selebihnya — cara paling selamat ialah melalui Organizer dalam Xcode (Window > Organizer > Archives), tempat anda boleh menyemak dan memadamnya berserta konteksnya.
iOS DeviceSupport, di ~/Library/Developer/Xcode/iOS DeviceSupport, menyimpan simbol nyahpepijat yang disalin oleh Xcode daripada setiap iPhone atau iPad fizikal yang pernah anda sambungkan — satu folder bagi setiap versi iOS, lazimnya 2–5 GB setiap satu. Folder bagi versi iOS yang tidak lagi dijalankan oleh mana-mana peranti anda hanyalah beban mati: padamkannya, dan jika anda menyambungkan peranti dengan versi itu semula, Xcode hanya akan menyalin semula simbolnya (anda akan melihat “Preparing debugger support” sekali). Folder serupa turut wujud bagi peranti watchOS dan tvOS.
Xcode juga menyimpan cachenya sendiri di bawah ~/Library/Caches/com.apple.dt.Xcode, manakala simulator menyimpan cache dalam ~/Library/Developer/CoreSimulator/Caches. Kedua-duanya dibina semula apabila diperlukan, tetapi kosongkan cache ini hanya semasa Xcode dan aplikasi Simulator tidak berjalan, dan biarkan sahaja fail cache CoreSimulator yang anda tidak kenali.
Cache pengurus pakej (SwiftPM, CocoaPods, npm, Homebrew)
Pengurus pakej menyimpan kebergantungan yang dimuat turun supaya pemasangan seterusnya lebih pantas. Itu berguna, tetapi cache ini tetap boleh menjadi kategori storan yang besar pada Mac yang telah digunakan untuk projek bertahun-tahun. Cache muat turun ini boleh dibina semula, tetapi pemasangan seterusnya perlu memuat turun pakej sekali lagi.
Swift Package Manager menyimpan pakej yang dimuat turun di ~/Library/Caches/org.swift.swiftpm, dan checkout yang telah diselesaikan bagi setiap projek turut berada dalam folder DerivedData projek itu — jadi mengosongkan DerivedData sudah mengosongkan bahagian tersebut. Cache bersama itu boleh dipadam melalui Finder atau dengan rm -rf pada laluan tersebut.
CocoaPods menyimpan pod yang dimuat turun di ~/Library/Caches/CocoaPods. Cara yang betul untuk mengosongkannya ialah perintah terbina dalam: pod cache clean --all. Folder Pods dalam projek anda tidak disentuh; hanya cache muat turun yang dibuang.
Cache npm terletak di ~/.npm dan boleh mencecah beberapa gigabait pada Mac yang banyak digunakan untuk JavaScript. Jalankan npm cache clean --force untuk mengosongkannya (npm mewajibkan pilihan itu kerana cachenya membaiki diri sendiri dan lazimnya tidak perlu dibersihkan; memadamnya selamat — pakej hanya akan dimuat turun semula pada pemasangan seterusnya). Pengguna pnpm boleh menjalankan pnpm store prune sebagai ganti.
Homebrew mengumpul muat turun lama dan versi pakej yang usang. brew cleanup membuang versi usang dan muat turun lapuk, dan jika dijalankan secara global ia turut menyahpasang kebergantungan yang tidak lagi diperlukan oleh mana-mana pakej (kecuali jika HOMEBREW_NO_AUTOREMOVE ditetapkan); brew cleanup --prune=all pula mengosongkan seluruh cache muat turun. Jalankan brew cleanup -n dahulu jika anda mahu melihat senarai pratonton (dry run) tentang apa yang akan dibuang.
Automasikan prosesnya
Semua langkah di atas berkesan, tetapi sisa pembangun ialah kitaran yang tidak berkesudahan: DerivedData kembali dalam masa seminggu kerja biasa, cache terisi semula, dan setiap kemas kini Xcode meninggalkan satu lagi runtime yang tidak digunakan. Jika anda tidak mahu mengulangi enam prosedur manual setiap bulan, bahagian inilah yang berbaloi diautomasikan — dengan alat yang menunjukkan alasannya, bukan memadam secara pukal tanpa penjelasan.
AskClean melayan fail pembangun sebagai kategori tersendiri: satu imbasan memperincikan DerivedData Xcode mengikut projek, runtime simulator lama (dibaca melalui simctl, dengan runtime terkini bagi setiap platform dikekalkan), fail sokongan peranti, serta cache pengurus pakej untuk npm, SwiftPM, cargo, uv dan banyak lagi. Ia juga mengesan pemakan ruang yang lebih baharu — model AI setempat — dengan menyenaraikan model Hugging Face satu per satu dan pustaka model Ollama sebagai satu item, semuanya tidak ditanda secara lalai.
Setiap item disertakan penjelasan — apakah item itu, sama ada ia boleh dibina semula, dan apakah kos memadamnya — dan tiada apa-apa dijalankan selagi anda belum mengesahkannya. Item yang disahkan dipadam secara kekal, bukan dialihkan ke Sampah, jadi semak setiap pilihan sebelum mengesahkan; kod sumber dan pustaka foto anda tidak pernah disentuh. Senarai semaknya sama seperti panduan ini, tanpa sejam kerja di Terminal.
Apa yang boleh dibina semula — dan apa yang tidak
Ini jadual sempadan pemadaman, bukan janji penjimatan yang sama bagi semua orang. Ukur Mac anda sebelum dan selepas setiap tindakan — skrip audit baca sahaja dalam panduan storan Simulator Xcode melaporkan folder ini tanpa mengubah apa-apa.
| Kategori | Lokasi lalai | Akibat pemadaman |
|---|---|---|
| DerivedData | ~/Library/Developer/Xcode/DerivedData | Dibina dan diindeks semula; kod sumber dan sejarah git tidak disentuh. |
| Peranti simulator | ~/Library/Developer/CoreSimulator/Devices | Aplikasi dan data ujian peranti maya yang dipilih hilang; padam melalui simctl atau Xcode. |
| Archives | ~/Library/Developer/Xcode/Archives | Mungkin membuang dSYM yang diperlukan untuk simbolikasi laporan ranap; semak dalam Organizer dahulu. |
| DeviceSupport | ~/Library/Developer/Xcode/iOS DeviceSupport | Simbol nyahpepijat disalin semula apabila peranti dengan versi OS itu disambungkan semula. |
Soalan lazim
Adakah DerivedData selamat dipadam?
Ya — ia antara pemadaman besar yang paling selamat pada Mac. DerivedData hanya mengandungi fail yang dijana oleh Xcode daripada kod sumber anda: produk binaan, cache modul, indeks dan log. Kod, fail projek dan sejarah git anda disimpan di tempat lain dan tidak terjejas. Satu-satunya akibat ialah binaan seterusnya bagi setiap projek menjadi binaan semula penuh dan pengindeksan dijalankan semula.
Berapa kerap saya perlu mengosongkan DerivedData?
Tiada jadual wajib — kosongkannya apabila saiznya cukup besar untuk memberi kesan, iaitu setiap satu atau dua bulan bagi kebanyakan pembangun aktif. Dua keadaan sentiasa mewajarkannya: apabila anda perlukan ruang cakera dengan segera, dan apabila projek menunjukkan ralat binaan yang tidak dapat dijelaskan atau pelengkapan kod yang lapuk, kerana memadam DerivedData ialah pembaikan pertama yang lazim.
Adakah Xcode akan menjadi lebih perlahan selepas saya memadam DerivedData?
Untuk sementara, 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 biasa — DerivedData menyimpan cache, bukan pengoptimuman yang hilang buat selama-lamanya.
Bagaimana pula dengan ~/Library/Developer/CoreSimulator — bolehkah saya memadamnya?
Jangan padam secara membuta tuli — folder itu menyimpan simulator yang sedang dipasang berserta datanya, dan memadam keseluruhannya akan merosakkan simulator tersebut sehingga anda memasang semula runtime. Sebaliknya, kemaskannya dengan betul: jalankan xcrun simctl delete unavailable bagi peranti yatim (aplikasi dan datanya turut dipadam), buang runtime lama melalui Settings > Components dalam Xcode, padam peranti yang tidak digunakan dalam Devices and Simulators, dan kosongkan hanya subfolder Caches secara manual, semasa Xcode dan Simulator tidak berjalan.
Adakah Clean Build Folder melakukan perkara yang sama?
Tidak. Product > Clean Build Folder (Shift-Command-K) hanya mengosongkan produk binaan bagi projek semasa, dan membiarkan indeks, cache modul serta folder setiap projek lain. Ia alat untuk menyelesaikan masalah binaan, bukan alat untuk menjimatkan ruang cakera — untuk mendapatkan semula ruang sebenar, anda perlu memadam folder DerivedData itu sendiri.
Sumber