क्रैश सिंबल खोए बिना पुराने Xcode Archives कैसे हटाएँ
AskClean टीम · अपडेट: 2026-11-02
हाँ, पुराने Xcode Archives डिलीट किए जा सकते हैं, लेकिन तभी जब पक्का हो जाए कि वह बिल्ड अब इस्तेमाल में नहीं है और क्रैश रिपोर्ट के लिए उसके dSYM की ज़रूरत नहीं रही। Xcode Organizer में हर .xcarchive को अलग-अलग जाँचें, App Store या TestFlight पर लाइव हर बिल्ड रखें, और सिर्फ़ उन्हीं आर्काइव को रद्दी में डालें जिनकी जगह नए बिल्ड ले चुके हैं।

Xcode आर्काइव कैश नहीं है
Product > Archive चलाने पर डिस्ट्रिब्यूशन के लिए तैयार बिल्ड एक .xcarchive बंडल के रूप में सहेजा जाता है। Xcode इन बंडलों को डिफ़ॉल्ट रूप से ~/Library/Developer/Xcode/Archives में तारीख़ वाले फ़ोल्डरों में रखता है और Organizer में दिखाता है। DerivedData के उलट आर्काइव सिर्फ़ रफ़्तार बढ़ाने वाला कैश नहीं है: इसमें उस बिल्ड की हूबहू ऐप बाइनरी, बिल्ड मेटाडेटा और dSYM फ़ाइलें हो सकती हैं। dSYM बाइनरी से UUID के ज़रिए जुड़ा होता है, इसलिए वही सोर्स बाद में दोबारा बिल्ड करने से उसकी जगह लेने लायक़ dSYM नहीं बनता — और मेल खाते सिंबल न हों, तो उस बाइनरी की क्रैश रिपोर्ट में फ़ंक्शन के नाम और सोर्स की जगह के बजाय सिर्फ़ मेमोरी एड्रेस दिखेंगे।
डिलीट करने से पहले हर बिल्ड जाँचें
शुरुआत Finder से नहीं, Xcode से करें: Window > Organizer खोलें, Archives चुनें, संबंधित ऐप चुनें और हर एंट्री का वर्शन, बिल्ड नंबर, बनने की तारीख़ और डिस्ट्रिब्यूशन की स्थिति देखें। हटाने की सूची से पहले रखने की सूची बनाएँ: यूज़र्स के लिए अभी उपलब्ध हर वर्शन, हर सक्रिय TestFlight बिल्ड, अब भी इंस्टॉल हर Enterprise या Ad Hoc बिल्ड, और हर वह रिलीज़ रखें जिसकी क्रैश रिपोर्ट आपको अब भी जाँचनी पड़ सकती है। सफल अपलोड का मतलब यह नहीं कि लोकल आर्काइव बेकार हो गया — Apple की डीबगिंग गाइड भी डिस्ट्रिब्यूट किए गए हर बिल्ड का आर्काइव रखने की सलाह देती है। जगह का अंदाज़ा चाहिए, तो du -sh ~/Library/Developer/Xcode/Archives चलाएँ; यह सिर्फ़ मापता है, कुछ डिलीट नहीं करता।
- Window > Organizer खोलें और Archives चुनें।
- ऐप चुनें, फिर अभी इस्तेमाल हो रहे हर प्रोडक्शन, TestFlight, Enterprise या Ad Hoc बिल्ड का वर्शन और बिल्ड नंबर लिख लें।
- जहाँ लागू हो, पक्का करें कि ज़रूरी सिंबल अपलोड हो चुके हैं, और अगर आपकी रिटेंशन नीति माँगती है, तो जिन आर्काइव का कोई विकल्प नहीं है, उन्हें बैकअप वाली स्टोरेज में कॉपी करें।
- हटाने के लिए सिर्फ़ उन्हें चिह्नित करें जिनकी जगह नए बिल्ड ले चुके हैं: पुराने रिलीज़ कैंडिडेट, छोड़े गए अंदरूनी बिल्ड और क्रैश-जाँच की अवधि से बाहर हो चुके वर्शन।
- Organizer से एक-एक करके डिलीट करें, और रद्दी ख़ाली करने से पहले जाँच लें कि जिन एंट्री को रहना था, वे मौजूद हैं।
सिर्फ़ तारीख़ के आधार पर आर्काइव रखना या हटाना सुरक्षित नीति नहीं है: नया वर्शन आने के बहुत बाद तक पुरानी प्रोडक्शन बाइनरी ग्राहकों के डिवाइस पर इंस्टॉल रह सकती है।
डिलीट करने का सबसे सुरक्षित तरीका
Organizer से डिलीट करना सबसे अच्छा है, क्योंकि वहाँ ऐप की पहचान, वर्शन और बिल्ड नंबर आपकी आँखों के सामने रहते हैं: जिस आर्काइव की ज़रूरत न होने की पुष्टि हो चुकी है, उसे चुनें और Delete इस्तेमाल करें। Finder का सहारा तभी लें जब Organizer कोई पुराना या ख़राब बंडल न खोल पाए — तब उसकी Info.plist की जानकारी अपनी जाँच-सूची से मिलाकर ठीक वही .xcarchive पहचानें और सिर्फ़ उसी को रद्दी में डालें; किसी पूरे तारीख़ वाले फ़ोल्डर को सिर्फ़ इसलिए न हटाएँ कि उसका नाम पुराना है। आर्काइव बंडल के अंदर की फ़ाइलें न बदलें, और जब तक Organizer दोबारा खोलकर ज़रूरी बिल्ड एक्सपोर्ट न कर लें (और सिंबल अहम हों तो कोई प्रतिनिधि क्रैश सिंबॉलिकेट करके न देख लें), तब तक रद्दी ख़ाली न करें। टर्मिनल से स्थायी डिलीट यह सुरक्षा छीन लेता है, और सफ़ाई को ज़्यादा सही भी नहीं बनाता।
आर्काइव रखने की नीति बनाएँ
नीति रिलीज़ की स्थिति पर टिकी हो, फ़ाइल की उम्र पर नहीं: अभी डिस्ट्रिब्यूट हो रहे सभी बिल्ड रखें, पुराने प्रोडक्शन बिल्ड तब तक रखें जब तक आप उनकी क्रैश रिपोर्ट लेते हैं, Enterprise बिल्ड उनके इंस्टॉलेशन की मियाद ख़त्म होने तक रखें, और क़ानूनी, सपोर्ट या इंसिडेंट नीति के लिए ज़रूरी अहम रिलीज़ भी रखें। हर रिलीज़ के लिए दर्ज करें कि आर्काइव कहाँ है, dSYM अपलोड हुए या नहीं और बिल्ड कब हटाया जा सकता है; आर्काइव बाहरी या क्लाउड स्टोरेज में ले जाएँ, तो उन्हें रीस्टोर करके जाँचें। तुरंत और कम जोखिम वाली जगह चाहिए, तो पहले DerivedData और पुराना सिम्युलेटर डेटा साफ़ करें। AskClean आर्काइव को आम कैश नहीं मानता: वह हर .xcarchive को अलग आइटम के रूप में दिखाता है और उस पर “वापस न मिलने वाली कीमत” की चेतावनी लगाता है; आपकी मंज़ूरी के बाद वह आइटम स्थायी रूप से डिलीट होता है, लेकिन आपकी सपोर्ट अवधि वह नहीं जानता और ग़ायब dSYM की भरपाई नहीं कर सकता।
फ़ैसलों और जोखिमों की तुलना
जानें कि कौन-से Xcode Archives डिलीट किए जा सकते हैं, .xcarchive फ़ाइलें कहाँ रहती हैं, Organizer में पुराने बिल्ड कैसे हटाएँ और dSYM कब रखने चाहिए।
| फ़ैसला | कहाँ जाँचें | सुरक्षा सीमा |
|---|---|---|
| Xcode आर्काइव कैश नहीं है | ~/Library/Developer/Xcode/Archives | Product > Archive चलाने पर डिस्ट्रिब्यूशन के लिए तैयार बिल्ड एक .xcarchive बंडल के रूप में सहेजा जाता है। |
| डिलीट करने से पहले हर बिल्ड जाँचें | Window > Organizer > Archives | शुरुआत Finder से नहीं, Xcode से करें: Window > Organizer खोलें, Archives चुनें, संबंधित ऐप चुनें और हर एंट्री का वर्शन, बिल्ड नंबर, बनने की तारीख़ और डिस्ट्रिब्यूशन की स्थिति देखें। |
| डिलीट करने का सबसे सुरक्षित तरीका | Organizer / Finder / रद्दी | Organizer से डिलीट करना सबसे अच्छा है, क्योंकि वहाँ ऐप की पहचान, वर्शन और बिल्ड नंबर आपकी आँखों के सामने रहते हैं: जिस आर्काइव की ज़रूरत न होने की पुष्टि हो चुकी है, उसे चुनें और Delete इस्तेमाल करें। |
| आर्काइव रखने की नीति बनाएँ | रिलीज़ की सूची / बैकअप | नीति रिलीज़ की स्थिति पर टिकी हो, फ़ाइल की उम्र पर नहीं: अभी डिस्ट्रिब्यूट हो रहे सभी बिल्ड रखें, पुराने प्रोडक्शन बिल्ड तब तक रखें जब तक आप उनकी क्रैश रिपोर्ट लेते हैं, Enterprise बिल्ड उनके इंस्टॉलेशन की मियाद ख़त्म होने तक रखें, और क़ानूनी, सपोर्ट या इंसिडेंट नीति के लिए ज़रूरी अहम रिलीज़ भी रखें। |
FAQ
क्या ~/Library/Developer/Xcode/Archives का सब कुछ डिलीट किया जा सकता है?
एक झटके में सब कुछ डिलीट करना सुरक्षित नहीं है। आर्काइव में डिस्ट्रिब्यूट किए गए बिल्ड की हूबहू बाइनरी और dSYM हो सकते हैं। लाइव हर प्रोडक्शन, TestFlight, Enterprise या Ad Hoc बिल्ड और हर वह वर्शन रखें जिसके क्रैश की जाँच आपको अब भी करनी पड़ सकती है।
क्या आर्काइव डिलीट करने से ऐप App Store से हट जाएगा?
नहीं। लोकल .xcarchive डिलीट करने से पहले से अपलोड किया गया ऐप न App Store Connect से हटता है, न ग्राहकों के डिवाइस से। इससे सिर्फ़ आपकी लोकल रिलीज़ फ़ाइल हटती है, जिसकी ज़रूरत दोबारा एक्सपोर्ट या सिंबॉलिकेशन के लिए पड़ सकती है।
क्या उसी कमिट को दोबारा बिल्ड करके dSYM फिर से बनाया जा सकता है?
भरोसेमंद रूप से नहीं। dSYM को डिस्ट्रिब्यूट की गई बाइनरी के UUID से मेल खाना चाहिए, और नया बिल्ड बाइनरी की नई पहचान बनाता है। मूल आर्काइव या उससे मेल खाते सिंबल बचाकर रखें।
स्रोत