AskClean

احذف Xcode DerivedData وذاكرات المطوّرين المؤقتة بأمان

فريق AskClean · آخر تحديث 2026-11-02

DerivedData هو مجلد العمل المؤقت في Xcode لنواتج البناء والفهارس، وقد يتضخم بصمت إلى عشرات الغيغابايتات. وحذفه آمن: أنهِ Xcode، واحذف محتويات ~/Library/Developer/Xcode/DerivedData، وسيعيد Xcode بناء كل شيء عند البناء التالي. يغطي هذا الدليل ذلك، إضافة إلى المحاكيات والأرشيفات وذاكرات الحزم المؤقتة.

احذف Xcode DerivedData وذاكرات المطوّرين المؤقتة بأمان
كيف تحذف Xcode DerivedData بأمان، وتزيل بيئات تشغيل المحاكي القديمة، وتنظّف الأرشيفات وملفات دعم الأجهزة وذاكرات مديري الحزم المؤقتة على جهاز Mac.

ما هو DerivedData ولماذا يتضخم

DerivedData هو المكان الذي يحفظ فيه Xcode كل ما يشتقّه من شيفرتك المصدرية: كائنات البناء الوسيطة، والنواتج المترجمة، وذاكرات الوحدات المؤقتة، وفهارس الرموز التي يعتمد عليها إكمال الشيفرة والانتقال إلى التعريف، وسجلات البناء. ويقع افتراضيًا في ~/Library/Developer/Xcode/DerivedData، وفيه مجلد فرعي لكل مشروع أو مساحة عمل فتحتها يومًا.

وينمو لسبب بنيوي: ينشئ Xcode مجلد DerivedData لكل مشروع تفتحه، بما في ذلك النسخ المستنسخة العابرة التي بنيتها مرة ولم تعد إليها، ولا يحذف هذه المجلدات من تلقاء نفسه. ويحوي كل مجلد نواتج بناء منفصلة لكل تكوين ووجهة (Debug وRelease، المحاكي والجهاز)، لذا قِس المجلدات الفرعية للمشاريع بدل أن تفترض مقدار المساحة التي سيستعيدها جهازك.

كل ما فيه قابل لإعادة الإنشاء بحكم التعريف، فهذا هو معنى «مشتق» (derived). حذف DerivedData لا يمس أبدًا شيفرتك المصدرية ولا إعدادات مشروعك ولا أي شيء خاضع لإدارة الإصدارات. الكلفة الوحيدة هي الوقت: يصبح البناء التالي لكل مشروع بناءً نظيفًا كاملًا، وتعمل الفهرسة مجددًا في الخلفية لبضع دقائق.

احذف DerivedData

أمر Clean Build Folder في Xcode (Product > Clean Build Folder أو Shift-Command-K) لا يمسح إلا نواتج بناء المشروع المفتوح حاليًا؛ وهو مفيد لإصلاح بناء غريب، لكنه بالكاد يحرّك مؤشر مساحة القرص. ولاسترداد مساحة حقيقية، احذف مجلدات DerivedData نفسها: أظهِرها من إعدادات Locations في Xcode، أو انتقل إلى المجلد في Finder، أو احذفها من «الوحدة الطرفية». والطرق الثلاث تنتهي إلى النتيجة نفسها.

الحذف مشروعًا تلو الآخر هو الخيار الدقيق: أبقِ DerivedData للمشروعين أو الثلاثة التي تبنيها يوميًا، واحذف مجلدات كل ما عداها. أما حذف المجلد بأكمله فهو الخيار السريع، ولا بأس به أيضًا، غير أنك تدفع كلفة إعادة البناء الكاملة لكل المشاريع دفعة واحدة.

  1. أنهِ Xcode أولًا؛ فحذف DerivedData أثناء تشغيل Xcode قد يربك المفهرس، وقد لا تُحذف الملفات التي يفتحها Xcode حذفًا نظيفًا.
  2. اعثر على المجلد: في Xcode افتح Settings > Locations وانقر السهم الصغير بجوار مسار DerivedData لإظهاره في Finder، أو اضغط Command-Shift-G في Finder وأدخل ~/Library/Developer/Xcode/DerivedData مباشرة.
  3. رتّب المجلدات الفرعية للمشاريع حسب الحجم، وحدد ما تريد التخلص منه (أو اضغط Command-A لتحديدها كلها)، ثم انقلها إلى سلة المهملات. البدء بسلة المهملات هو العادة الأسلم، إذ يمكنك الاستعادة فورًا إن غيّرت رأيك.
  4. أما من الوحدة الطرفية، فيحذف الأمر rm -rf ~/Library/Developer/Xcode/DerivedData كل شيء دفعة واحدة. وهو أسرع من Finder مع المجلدات الضخمة جدًا، لكن اقرأ الملاحظة أدناه قبل استخدامه.
  5. أعد فتح Xcode وابدأ البناء. توقّع أن يستغرق أول بناء لكل مشروع وقتًا أطول بشكل ملحوظ، وأن ترى «Indexing» في شريط النشاط لبعض الوقت؛ وكلاهما كلفة تُدفع مرة واحدة.

احذر مع rm -rf: فهو يتجاوز سلة المهملات ويحذف نهائيًا دون إمكانية للتراجع. اكتب المسار بدقة، ولا تشغّله أبدًا مع sudo لهذه المهمة، وإن لم تكن معتادًا على الوحدة الطرفية فطريقة Finder تؤدي المهمة نفسها مع إمكانية التراجع.

امسح بيئات تشغيل المحاكي القديمة

كثيرًا ما تكون المحاكيات فئة كبيرة أخرى من مساحة تخزين المطوّرين. لكل بيئة تشغيل نزّلتها لـ iOS أو watchOS أو tvOS حجمها الخاص، ويحتفظ كل جهاز محاكى ببياناته تحت ~/Library/Developer/CoreSimulator/Devices. وإن مررت ببضع ترقيات لـ Xcode، فافحص بيئات التشغيل الخاصة بإصدارات أنظمة لم تعد ضمن الأنظمة التي تختبر عليها.

أسرع مكسب هو أمر التنظيف المدمج: شغّل xcrun simctl delete unavailable في الوحدة الطرفية. يحذف هذا الأمر كل جهاز محاكى موسوم بأنه unavailable، ومعظمها أجهزة يتيمة خلّفتها بيئات تشغيل محذوفة وإصدارات Xcode قديمة، ويحذف معها التطبيقات والبيانات التي بداخلها. فراجع القائمة أولًا بالأمر xcrun simctl list devices، خاصة إن كان لديك أكثر من إصدار Xcode مثبت.

أما بيئات التشغيل نفسها، فافتح Settings > Components في Xcode (واسمها Platforms في Xcode 14–15). سترى كل بيئة تشغيل مثبتة للمحاكي مع حجمها؛ حدد القديمة منها واحذفها. ولا تُبقِ إلا أحدث بيئة تشغيل لكل منصة، ما لم تكن تختبر فعليًا على إصدارات أنظمة أقدم.

يمكنك أيضًا حذف أجهزة محاكاة بعينها من Window > Devices and Simulators: انتقل إلى تبويب Simulators، وانقر بالزر الأيمن على أي جهاز لا تستخدمه، كنماذج iPhone الستة المكررة التي تحمل بيانات جولات اختبار قديمة، ثم اختر Delete. وتذهب معه بياناته المحفوظة وتطبيقاته.

الأرشيفات وملفات دعم الأجهزة والذاكرات المؤقتة

تتراكم الأرشيفات في ~/Library/Developer/Xcode/Archives في كل مرة تشغّل فيها Product > Archive لتوزيع بنية. يحوي كل أرشيف بنية كاملة من التطبيق مع رموز تصحيح الأخطاء dSYM الخاصة بها، وغالبًا ما يتراوح حجمه بين 100 MB و1 GB. وقبل الحذف اعرف المقايضة: ملفات dSYM بداخله هي ما يتيح لك فك ترميز تقارير الأعطال لتلك البنية بعينها. احتفظ بأرشيفات الإصدارات التي ما زالت متاحة على App Store أو TestFlight (أو تأكد أن App Store Connect يحتفظ بملفات dSYM)، واحذف البقية؛ والطريق الأسلم هو Organizer في Xcode (Window > Organizer > Archives)، حيث تراجعها وتحذفها وأنت ترى سياقها.

يحتوي مجلد iOS DeviceSupport في ~/Library/Developer/Xcode/iOS DeviceSupport على رموز تصحيح ينسخها Xcode من كل جهاز iPhone أو iPad فعلي وصّلته يومًا، بمجلد لكل إصدار iOS يبلغ عادةً 2-5 GB. ومجلدات إصدارات iOS التي لم يعد أي من أجهزتك يعمل بها عبء لا فائدة منه: احذفها، وإن وصّلت يومًا جهازًا بذلك الإصدار من جديد فسيعيد Xcode نسخ الرموز ببساطة (سترى «Preparing debugger support» مرة واحدة). وتوجد مجلدات مماثلة لأجهزة watchOS وtvOS أيضًا.

ويحتفظ Xcode أيضًا بذاكراته المؤقتة في ~/Library/Caches/com.apple.dt.Xcode، وتحتفظ المحاكيات بذاكراتها في ~/Library/Developer/CoreSimulator/Caches. يُعاد بناء كلتيهما عند الحاجة، لكن لا تمسحهما إلا وXcode وتطبيق Simulator مغلقان، واترك على حالها أي ملفات في ذاكرة CoreSimulator لا تعرفها.

ذاكرات مديري الحزم (SwiftPM وCocoaPods وnpm وHomebrew)

يحتفظ مديرو الحزم بالاعتماديات التي نزّلوها لتصبح عمليات التثبيت القادمة سريعة. وهذا مفيد، لكنه قد يتحول إلى فئة كبيرة من مساحة القرص على جهاز مرّت عليه سنوات من المشاريع. يمكن إعادة بناء ذاكرات التنزيل هذه، لكن التثبيت التالي سيحتاج إلى جلب الحزم من جديد.

يخزّن Swift Package Manager الحزم المنزّلة في ~/Library/Caches/org.swift.swiftpm، كما توجد النسخ المستخرجة المحلولة لكل مشروع داخل مجلد DerivedData الخاص به، لذا فمسح DerivedData يمسحها أصلًا. أما الذاكرة المشتركة فيمكنك حذفها من Finder، أو بالأمر rm -rf على ذلك المسار.

يحتفظ CocoaPods بحزم pods المنزّلة في ~/Library/Caches/CocoaPods. والطريقة النظيفة لإفراغها هي الأمر المدمج pod cache clean --all. لا تُمس مجلدات Pods في مشاريعك؛ تُحذف ذاكرة التنزيل وحدها.

توجد ذاكرة npm في ~/.npm، وقد تبلغ غيغابايتات عديدة على جهاز يكثر فيه العمل بـ JavaScript. شغّل npm cache clean --force لإفراغها (يشترط npm هذا الخيار لأن ذاكرته تصلح نفسها بنفسها ولا تحتاج عادةً إلى تنظيف؛ وحذفها آمن، إذ تُنزَّل الحزم من جديد عند التثبيت التالي). ويمكن لمستخدمي pnpm تشغيل pnpm store prune بدلًا من ذلك.

يكدّس Homebrew التنزيلات القديمة وإصدارات الحزم المتقادمة. يزيل الأمر brew cleanup الإصدارات المتقادمة والتنزيلات القديمة، وحين يُشغَّل على كل الحزم يزيل أيضًا الاعتماديات التي لم يعد شيء يحتاج إليها (ما لم يكن المتغير HOMEBREW_NO_AUTOREMOVE مضبوطًا)؛ أما brew cleanup --prune=all فيفرغ أيضًا ذاكرة التنزيل بأكملها. وشغّل brew cleanup -n أولًا إن أردت قائمة تجريبية بما سيُحذف دون حذف فعلي.

أتمتة التنظيف

كل ما سبق يعمل، لكن مخلفات المطوّرين دوامة لا تتوقف: يعود DerivedData في غضون أسبوع من العمل المعتاد، وتمتلئ الذاكرات المؤقتة مجددًا، وكل تحديث لـ Xcode يترك بيئة تشغيل أخرى بلا استخدام. فإن كنت تفضّل ألا تعيد ستة إجراءات يدوية كل شهر، فهذا هو الجزء الجدير بالأتمتة، بأداة تُظهر منطقها بدل أن تحذف بالجملة في صمت.

يعامل AskClean ملفات المطوّرين كفئات أساسية: يفصّل فحص واحد Xcode DerivedData لكل مشروع، وبيئات تشغيل المحاكي القديمة (يقرؤها عبر simctl ويُبقي الأحدث لكل منصة)، وملفات دعم الأجهزة، وذاكرات مديري الحزم لـ npm وSwiftPM وcargo وuv وغيرها. ويلتقط أيضًا مستهلكي المساحة الأحدث، أي نماذج الذكاء الاصطناعي المحلية: يسرد نماذج Hugging Face نموذجًا نموذجًا، ويعرض مكتبة نماذج Ollama عنصرًا واحدًا، وكلها غير محددة افتراضيًا.

يأتي كل عنصر مع شرح لماهيته، وهل يمكن إعادة بنائه، وما كلفة حذفه، ولا يُنفَّذ شيء قبل أن تؤكده. تُحذف العناصر المؤكدة نهائيًا ولا تُنقل إلى سلة المهملات، لذا راجع كل تحديد قبل التأكيد؛ ولا تُمس شيفرتك المصدرية ومكتبة الصور أبدًا. إنها قائمة التحقق نفسها الواردة في هذا الدليل، من دون ساعة العمل في الوحدة الطرفية.

ما يمكن إعادة بنائه وما لا يمكن

هذا جدول لحدود الحذف، لا وعد بمقدار ثابت من المساحة. قِس جهاز Mac قبل أي إجراء وبعده بأداة الفحص للقراءة فقط الواردة في دليل مساحة المحاكي.

الفئةالموقع الافتراضيعاقبة الحذف
DerivedData~/Library/Developer/Xcode/DerivedDataيُعاد البناء والفهرسة، وتبقى الشيفرة المصدرية وسجل git كما هما.
أجهزة المحاكي~/Library/Developer/CoreSimulator/Devicesتضيع تطبيقات الأجهزة الافتراضية المحددة وبيانات اختبارها؛ احذفها عبر simctl أو Xcode.
Archives~/Library/Developer/Xcode/Archivesقد يزيل الحذف ملفات dSYM اللازمة لفك ترميز تقارير الأعطال؛ راجعها في Organizer أولًا.
DeviceSupport~/Library/Developer/Xcode/iOS DeviceSupportتُنسخ رموز التصحيح من جديد إذا وصّلت جهازًا بإصدار النظام نفسه.

الأسئلة الشائعة

هل حذف DerivedData آمن؟

نعم، فهو من أكثر عمليات الحذف الكبيرة أمانًا على جهاز Mac. لا يحوي DerivedData إلا ملفات يولّدها Xcode من شيفرتك المصدرية: نواتج البناء وذاكرات الوحدات المؤقتة والفهارس والسجلات. أما شيفرتك وملفات مشروعك وسجل git فموجودة في مكان آخر ولا تتأثر أبدًا. العاقبة الوحيدة أن البناء التالي لكل مشروع يكون إعادة بناء كاملة، وأن الفهرسة تعمل من جديد.

كم مرة ينبغي أن أمسح DerivedData؟

لا يوجد جدول ملزم؛ امسحه حين يكبر بما يكفي ليُحدث فرقًا، وهذا يعني لأغلب المطوّرين النشطين مرة كل شهر أو شهرين. وهناك لحظتان تبرّران مسحه دائمًا: حين تحتاج إلى مساحة قرص بسرعة، وحين يُظهر مشروع أخطاء بناء غير مفهومة أو إكمال شيفرة قديمًا، إذ يكون مسح DerivedData هو الإصلاح الأول المعتاد.

هل سيصبح Xcode أبطأ بعد حذف DerivedData؟

مؤقتًا، نعم. أول بناء لكل مشروع يكون بناءً نظيفًا قد يستغرق أضعاف زمن البناء التزايدي، وتحتاج الفهرسة في الخلفية بضع دقائق قبل أن يعود إكمال الشيفرة والبحث إلى عملهما الكامل. وبعد تلك الدورة الأولى يعود الأداء كما كان تمامًا، فـ DerivedData يحوي ذاكرات مؤقتة لا تحسينات تخسرها إلى الأبد.

وماذا عن ~/Library/Developer/CoreSimulator: هل يمكنني حذفه؟

ليس دون تمييز؛ فهو يحوي المحاكيات المثبتة حاليًا وبياناتها، وحذفه بالكامل يعطّلها حتى تعيد تثبيت بيئات التشغيل. شذّبه بالطريقة الصحيحة بدلًا من ذلك: شغّل xcrun simctl delete unavailable للأجهزة اليتيمة (وتُحذف معها تطبيقاتها وبياناتها)، وأزل بيئات التشغيل القديمة من Settings > Components في Xcode، واحذف الأجهزة غير المستخدمة من Devices and Simulators، ولا تمسح يدويًا إلا المجلد الفرعي Caches، وXcode وSimulator مغلقان.

هل يؤدي Clean Build Folder الغرض نفسه؟

لا. يمسح Product > Clean Build Folder (Shift-Command-K) نواتج بناء المشروع الحالي فقط، ويُبقي الفهارس وذاكرات الوحدات المؤقتة ومجلدات كل المشاريع الأخرى في مكانها. إنه أداة لاستكشاف مشكلات البناء، لا أداة لاستعادة مساحة القرص؛ فاسترداد مساحة حقيقية يعني حذف مجلدات DerivedData نفسها.

المصادر

مساحة تخزين المطوّرين خطوة بخطوة