Crashlytics डैशबोर्ड में जाकर, क्रैश रिपोर्ट आसानी से पढ़ी जा सकती हैं


डिफ़ॉल्ट रूप से, Firebase Crashlytics आपकी डीबग सिंबल (dSYM) फ़ाइलों को अपने-आप प्रोसेस करता है, ताकि आपको डिकोड की गई और आसानी से पढ़ी जा सकने वाली क्रैश रिपोर्ट मिल सकें. आम तौर पर, अपने ऐप्लिकेशन में Crashlytics के शुरुआती सेटअप के दौरान, इस व्यवहार को कॉन्फ़िगर किया जाता है. इसके लिए, रन स्क्रिप्ट जोड़ें, जो आपके ऐप्लिकेशन के बिल्ड फ़ेज़ के दौरान dSYM फ़ाइलों को अपने-आप अपलोड करती है.

माफ़ करें, कुछ मामलों में dSYM फ़ाइलों के अपने-आप अपलोड होने की सुविधा काम नहीं करती. इस गाइड में, Crashlytics के आपके ऐप्लिकेशन की dSYM फ़ाइलों को न ढूंढ पाने पर, समस्या हल करने के कुछ तरीके बताए गए हैं.

पक्का करें कि Xcode, dSYMs को अपने-आप प्रोसेस कर सके और फ़ाइलों को अपलोड कर सके

अपने ऐप्लिकेशन में Crashlytics सेट अप करते समय, आपने dSYMs को अपने-आप प्रोसेस करने और फ़ाइलों को अपलोड करने के लिए, रन स्क्रिप्ट को कॉन्फ़िगर किया.

पक्का करें कि Crashlytics रन स्क्रिप्ट के लिए आपका कॉन्फ़िगरेशन, Xcode 15 के साथ शुरू हुई नई ज़रूरी शर्तों के हिसाब से अप-टू-डेट हो. अगर आपका कॉन्फ़िगरेशन अप-टू-डेट नहीं है, तो आपको गड़बड़ी का यह मैसेज दिख सकता है:
error: Info.plist Error Unable to process Info.plist at path ....

खास तौर पर, Xcode 15 और उसके बाद के वर्शन के लिए ज़रूरी है कि आप फ़ाइल की जगहों का ज़्यादा सटीक सेट दें. Crashlytics रन स्क्रिप्ट (firebase-ios-sdk/Crashlytics/run) के लिए, पक्का करें कि आपके पास यह सेटअप हो:

  1. बिल्ड फ़ेज़ टैब पर क्लिक करें. इसके बाद, स्क्रिप्ट चलाएं सेक्शन को बड़ा करें.

  2. इनपुट फ़ाइलें सेक्शन में, पक्का करें कि आपके पास इन फ़ाइलों की जगहों के पाथ हों:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

देखें कि Xcode, dSYMs जनरेट कर रहा है या नहीं

ज़्यादातर मामलों में, dSYM फ़ाइलें मौजूद नहीं होतीं, क्योंकि Xcode उन्हें जनरेट नहीं कर रहा होता. अपलोड पूरा न होने पर, Crashlytics Firebase कंसोल में "dSYM मौजूद नहीं है" वाली चेतावनी दिखाता है. अगर आपको यह सूचना मिलती है, तो सबसे पहले देखें कि Xcode, हर बिल्ड के लिए सही dSYM जनरेट कर रहा है या नहीं:

  1. Xcode में अपना प्रोजेक्ट खोलें. इसके बाद, Xcode Navigator में प्रोजेक्ट फ़ाइल चुनें.

  2. अपना मुख्य बिल्ड टारगेट चुनें.

  3. टारगेट का बिल्ड सेटिंग टैब खोलें. इसके बाद, सभी पर क्लिक करें.

  4. debug information format खोजें.

  5. अपने सभी बिल्ड टाइप के लिए, डीबग की जानकारी का फ़ॉर्मैट को dSYM फ़ाइल के साथ DWARF पर सेट करें.

  6. अपना ऐप्लिकेशन फिर से बनाएं.

अब आपकी क्रैश रिपोर्ट, Crashlytics डैशबोर्ड में दिखने लगेंगी. अगर समस्या बनी रहती है या आपको दूसरी गड़बड़ियां दिखती हैं, तो अपने dSYM ढूंढें और उन्हें मैन्युअल तरीके से Crashlytics पर अपलोड करें.

लोकल मशीन पर अपने dSYMs ढूंढना

अपनी मशीन पर सभी dSYMs के UUID दिखाने और मौजूद न होने वाले dSYM को खोजने के लिए, यह कमांड चलाएं:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

dSYM मिलने के बाद, उसे मैन्युअल तरीके से Crashlytics पर अपलोड करें. अगर mdfind कमांड से कोई नतीजा नहीं मिलता है, तो Products डायरेक्ट्री में जाकर देखें कि आपका .app कहां मौजूद है. डिफ़ॉल्ट रूप से, Products डायरेक्ट्री Derived Data में होती है. अगर आपका ऐप्लिकेशन प्रोडक्शन में रिलीज़ किया गया है, तो डिस्क पर मौजूद .xcarchive डायरेक्ट्री में भी इसका dSYM देखा जा सकता है:

  1. Xcode में, ऑर्गनाइज़र विंडो खोलें. इसके बाद, सूची से अपना ऐप्लिकेशन चुनें. Xcode, आपके प्रोजेक्ट के लिए संग्रह की सूची दिखाता है.

  2. Finder में किसी संग्रह को देखने के लिए, उस पर Control-क्लिक करें. उस पर फिर से कंट्रोल-क्लिक करें और फिर पैकेज का कॉन्टेंट दिखाएं पर क्लिक करें.

  3. .xcarchive में एक dSYMs डायरेक्ट्री होती है. इसमें Xcode की संग्रहण की प्रोसेस के हिस्से के तौर पर जनरेट किए गए dSYMs शामिल होते हैं.

dSYMs अपलोड करना

Crashlytics में dSYMs फ़ाइलों को अपलोड करने के कई तरीके उपलब्ध हैं. इन्हें अपने-आप या मैन्युअल तरीके से अपलोड किया जा सकता है.

(इसका सुझाव दिया जाता है) अपने dSYMs को अपने-आप प्रोसेस करें और फ़ाइलें अपलोड करें

Crashlytics को पहली बार सेट अप करते समय, आपने अपने ऐप्लिकेशन के लिए, अपने-आप अपलोड होने की सुविधा को कॉन्फ़िगर किया होगा. हालांकि, अगर अपने-आप अपलोड होने की सुविधा काम नहीं कर रही है, तो देखें कि आपका कॉन्फ़िगरेशन सही है या नहीं.

dSYM फ़ाइलों को मैन्युअल तरीके से अपलोड करना

अगर dSYM फ़ाइलें अपने-आप अपलोड नहीं हो रही हैं, तो इनमें से किसी एक विकल्प का इस्तेमाल करके, उन्हें मैन्युअल तरीके से अपलोड किया जा सकता है.

  • पहला विकल्प: कंसोल पर "खींचें और छोड़ें" विकल्प का इस्तेमाल करके, अपनी dSYM फ़ाइलों वाली ज़िप फ़ाइल अपलोड करें. इसके लिए, Firebaseकंसोल > Crashlytics > dSYMs टैब पर जाएं.

  • दूसरा विकल्प: upload-symbols स्क्रिप्ट का इस्तेमाल करें. इस स्क्रिप्ट को अपनी बिल्ड प्रोसेस में कहीं से भी कॉल किया जा सकता है, ताकि dSYM फ़ाइलों को मैन्युअल तरीके से अपलोड किया जा सके. upload-symbols स्क्रिप्ट को चलाने के लिए, इनमें से कोई एक विकल्प इस्तेमाल करें:

    • पहला विकल्प: अपनी बिल्ड प्रोसेस में यह लाइन शामिल करें:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • दूसरा विकल्प: सीधे अपने टर्मिनल से स्क्रिप्ट चलाएं:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    इस स्क्रिप्ट के इस्तेमाल से जुड़े नोट और अन्य निर्देशों के लिए, --help पैरामीटर के साथ upload-symbols चलाएं.