AskClean

איך למחוק Xcode Archives ישנים בלי לאבד קובצי dSYM

צוות AskClean · עודכן 2026-11-02

כן, אפשר למחוק Xcode Archives ישנים — אבל רק אחרי שווידאתם שה-build כבר לא מופץ ושקובץ ה-dSYM שלו לא יידרש לפענוח דוחות קריסה. עברו על קובצי .xcarchive אחד-אחד ב-Organizer של Xcode, שמרו כל build פעיל ב-App Store, ב-TestFlight, בהפצת Enterprise או Ad Hoc, והעבירו לפח האשפה רק archives שהוחלפו בגרסאות חדשות יותר.

איור איזומטרי של חבילות Xcode Archives, מחולקות לגרסאות פעילות מוגנות ול-builds ישנים שאפשר להסיר
Archive הוא תוצר של release ולא מטמון: הגנו על builds פעילים ובדקו את השאר אחד-אחד.

Archive אינו מטמון

הפקודה Product > Archive יוצרת חבילת .xcarchive בתיקייה ~/Library/Developer/Xcode/Archives, ובה קובץ ה-binary המדויק שהופץ, מטא-נתונים של ה-build ובדרך כלל גם קובץ dSYM תואם. את DerivedData אפשר לבנות מחדש מקוד המקור; קובץ dSYM, לעומת זאת, מותאם ל-UUID של build מסוים, והידור מחדש של אותו commit לא יוצר תחליף זהה. בלי הסמלים התואמים, דוחות קריסה של אותו build יציגו כתובות זיכרון במקום שמות של פונקציות ומיקומים בקוד.

בדקו את ה-builds לפני המחיקה

התחילו ב-Xcode ולא ב-Finder: ב-Window > Organizer > Archives מוצגים לכל archive האפליקציה, הגרסה, מספר ה-build, תאריך היצירה ומצב ההפצה. הכינו רשימת שמירה לפני רשימת מחיקה: כל גרסה שזמינה כרגע למשתמשים, כל build פעיל ב-TestFlight, כל build של Enterprise או Ad Hoc שעדיין מותקן, וכל גרסה שייתכן שעוד תחקרו את הקריסות שלה. העלאה מוצלחת לא הופכת את ה-archive המקומי למיותר, וגיל הקובץ לבדו אינו קריטריון בטוח למחיקה.

  1. פתחו Window > Organizer ובחרו Archives.
  2. בחרו את האפליקציה ורשמו את הגרסה ומספר ה-build של כל build שעדיין בשימוש ב-App Store, ב-TestFlight, ב-Enterprise או ב-Ad Hoc.
  3. ודאו שהסמלים הנחוצים הועלו במקרים הרלוונטיים, והעתיקו archives שאין להם תחליף לאחסון מגובה אם מדיניות השמירה שלכם מחייבת זאת.
  4. סמנו למחיקה רק release candidates שהוחלפו, builds פנימיים שננטשו וגרסאות שכבר מחוץ לתקופה שבה אתם חוקרים קריסות.
  5. מחקו את המועמדים אחד-אחד מתוך Organizer, ודאו שהפריטים שהתכוונתם לשמור עדיין מופיעים, ורק אז רוקנו את פח האשפה.

תאריך לבדו אינו מדיניות שמירה בטוחה: build ישן של גרסת הייצור עשוי להישאר מותקן במכשירי לקוחות זמן רב אחרי שגרסה חדשה יותר כבר הופצה.

הדרך הבטוחה למחוק

מחקו דרך Organizer, מועמד אחד בכל פעם: שם האפליקציה, הגרסה ומספר ה-build מוצגים ליד הפעולה. השתמשו ב-Finder רק אם Organizer לא מצליח לפתוח חבילה ישנה או פגומה — זהו את קובץ ה-xcarchive המדויק לפי ה-Info.plist שלו, והעבירו לפח האשפה רק אותו, לא תיקיית תאריך שלמה. אל תשנו קבצים בתוך חבילת archive, ואל תרוקנו את פח האשפה לפני שפתחתם שוב את Organizer ווידאתם שכל מה שתכננתם לשמור עדיין שם. מחיקה במסוף מבטלת את חלון השחזור הזה.

קבעו מדיניות שמירה

החליטו לפי מצב ה-release ולא לפי גיל הקובץ: שמרו את כל ה-builds שמופצים כרגע, builds קודמים של גרסת הייצור לתקופה שבה אתם עדיין מקבלים דוחות קריסה, ו-builds של Enterprise עד שההתקנות שלהם פגות. לכל release תעדו היכן נשמר ה-archive, אם הסמלים הועלו, מי יכול לשחזר אותו ומתי הוא כשיר למחיקה. כשחסר מקום בדחיפות, התחילו ב-DerivedData ובנתוני סימולטור מיושנים. AskClean מציג כל archive בנפרד, עם אזהרה שמחיקתו בלתי הפיכה, ואינו מתייחס ל-Archives כאל מטמון שאפשר למחוק בבת אחת.

השוואת החלטות וסיכונים

אילו Xcode Archives אפשר למחוק, היכן נשמרים קובצי .xcarchive, איך מסירים builds ישנים דרך ה-Organizer ומתי חובה לשמור את קובצי ה-dSYM.

החלטההיכן לבדוקגבול הבטיחות
Archive אינו מטמון~/Library/Developer/Xcode/Archivesהפקודה Product > Archive יוצרת חבילת .xcarchive בתיקייה ~/Library/Developer/Xcode/Archives, ובה קובץ ה-binary המדויק שהופץ, מטא-נתונים של ה-build ובדרך כלל גם קובץ dSYM תואם.
בדקו את ה-builds לפני המחיקהWindow > Organizer > Archivesהתחילו ב-Xcode ולא ב-Finder: ב-Window > Organizer > Archives מוצגים לכל archive האפליקציה, הגרסה, מספר ה-build, תאריך היצירה ומצב ההפצה.
הדרך הבטוחה למחוקOrganizer / Finder / פח האשפהמחקו דרך Organizer, מועמד אחד בכל פעם: שם האפליקציה, הגרסה ומספר ה-build מוצגים ליד הפעולה.
קבעו מדיניות שמירהרשימת גרסאות מופצות / גיבויהחליטו לפי מצב ה-release ולא לפי גיל הקובץ: שמרו את כל ה-builds שמופצים כרגע, builds קודמים של גרסת הייצור לתקופה שבה אתם עדיין מקבלים דוחות קריסה, ו-builds של Enterprise עד שההתקנות שלהם פגות.

שאלות נפוצות

אפשר למחוק את כל מה שיש ב-~/Library/Developer/Xcode/Archives?

לא כפעולה גורפת. ייתכן שהתיקייה מכילה את קובצי ה-binary וה-dSYM היחידים של builds שהופצו. שמרו כל build שעדיין פעיל בגרסת הייצור, ב-TestFlight, ב-Enterprise או ב-Ad Hoc, וכל גרסה שייתכן שעוד תחקרו את הקריסות שלה.

האם מחיקת archive תסיר את האפליקציה מ-App Store?

לא. מחיקת קובץ .xcarchive מקומי לא מסירה אפליקציה שכבר הועלתה ל-App Store Connect או הותקנה במכשירי לקוחות. היא מוחקת רק את התוצר המקומי, שאולי עוד תצטרכו לייצוא מחדש או לפענוח דוחות קריסה.

אפשר ליצור dSYM מחדש על ידי בנייה של אותו commit?

לא באופן אמין. ה-dSYM חייב להתאים בדיוק ל-UUID של ה-binary שהופץ, ובנייה חדשה יוצרת binary עם זהות אחרת. שמרו את ה-archive המקורי או את הסמלים התואמים לו.

מקורות

מדריכים נוספים על אחסון פיתוח