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


डिफ़ॉल्ट रूप से, Firebase Crashlytics आपके Flutter प्रोजेक्ट को अपने-आप इंस्ट्रूमेंट करता है, ताकि ज़रूरी सिंबल फ़ाइलें अपलोड की जा सकें. इससे यह पक्का होता है कि क्रैश रिपोर्ट को डिकोड किया जा सके और कोई भी व्यक्ति उन्हें पढ़ सके.

माफ़ करें, कुछ मामलों में ऐसा हो सकता है कि प्रोजेक्ट पूरी तरह से कॉन्फ़िगर न हो. इस गाइड में बताया गया है कि ऑटोमेशन क्या करता है. साथ ही, इसमें प्रोजेक्ट सेटअप को डीबग करने के शुरुआती चरण के बारे में बताया गया है.

Apple के प्लैटफ़ॉर्म

dSYM फ़ाइलें अपलोड करने के लिए, अपने कॉन्फ़िगरेशन की जांच करना

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

अगर आपको यह समस्या आ रही है, तो पहले पक्का करें कि आपने रन स्क्रिप्ट इंस्टॉल की हो:

  1. अपने प्रोजेक्ट की iOS डायरेक्ट्री (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) में, Xcode वर्कस्पेस फ़ाइल ढूंढें और उसे खोलें.

  2. पता लगाएं कि [firebase_crashlytics] Crashlytics Upload Symbols टाइटल वाली कोई रन स्क्रिप्ट, रनर टारगेट के बिल्ड फ़ेज़ में जोड़ी गई है या नहीं.

    रन स्क्रिप्ट मौजूद नहीं है या रन स्क्रिप्ट मौजूद है, यह जानने के लिए यहां दिया गया सेक्शन देखें.

अगर यह रन स्क्रिप्ट मौजूद नहीं है, तो इसे मैन्युअल तरीके से जोड़ा जा सकता है:

  1. अपने Apple ऐप्लिकेशन का Firebase ऐप्लिकेशन आईडी ढूंढें. यह आईडी दो जगहों पर मिल सकता है:

    • Firebase कंसोल में, अपने > प्रोजेक्ट सेटिंग पर जाएं. नीचे की ओर स्क्रोल करके, आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपने Firebase Apple ऐप्लिकेशन पर क्लिक करके, ऐप्लिकेशन की जानकारी देखें. इसमें, ऐप्लिकेशन का ऐप्लिकेशन आईडी भी शामिल है.

    • अपने Flutter प्रोजेक्ट की टॉप-लेवल डायरेक्ट्री में, अपनी firebase_options.dart फ़ाइल ढूंढें. आपके Apple ऐप्लिकेशन के Firebase ऐप्लिकेशन आईडी को GOOGLE_APP_ID के तौर पर लेबल किया गया है.

  2. > नई स्क्रिप्ट चलाने का फ़ेज़ पर क्लिक करें.

    पक्का करें कि स्क्रिप्ट चलाएं का यह नया फ़ेज़, आपके प्रोजेक्ट का आखिरी बिल्ड फ़ेज़ हो. ऐसा न करने पर, Crashlytics dSYMs को सही तरीके से प्रोसेस नहीं कर सकता.

  3. नए स्क्रिप्ट चलाएं सेक्शन को बड़ा करें.

  4. स्क्रिप्ट फ़ील्ड (शेल लेबल के नीचे मौजूद) में, यहां दी गई रन स्क्रिप्ट जोड़ें.

    ये स्क्रिप्ट आपकी dSYM फ़ाइलों को प्रोसेस करती हैं और फ़ाइलों को Crashlytics पर अपलोड करती हैं.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID: आपका Firebase Apple ऐप्लिकेशन आईडी (आपका Apple बंडल आईडी नहीं)
      Firebase Apple ऐप्लिकेशन आईडी का उदाहरण: 1:1234567890:ios:321abc456def7890

    Firebase ऐप्लिकेशन आईडी ढूंढने के दो तरीके यहां दिए गए हैं:

    • आपकी GoogleService-Info.plist फ़ाइल में, आपका ऐप्लिकेशन आईडी, GOOGLE_APP_ID वैल्यू है; या

    • Firebase कंसोल में, अपने प्रोजेक्ट की सेटिंग पर जाएं. नीचे की ओर स्क्रोल करके, आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, जिस Firebase ऐप्लिकेशन का ऐप्लिकेशन आईडी ढूंढना है उस पर क्लिक करें.

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

    ${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, इन इनपुट फ़ाइलों को तय की गई जगहों पर खोजता है, ताकि यह पक्का किया जा सके कि स्क्रिप्ट को चलाने के लिए, बिल्ड फ़ाइलें उपलब्ध हैं. साथ ही, अगर उपयोगकर्ता स्क्रिप्ट सैंडबॉक्सिंग चालू है, तो Xcode सिर्फ़ इनपुट फ़ाइलों में बताई गई फ़ाइलों को ऐक्सेस करने की अनुमति देता है.

    • अपने प्रोजेक्ट की dSYM फ़ाइलों की जगह की जानकारी देने पर, Crashlytics dSYMs को प्रोसेस कर सकता है.
    • अपने ऐप्लिकेशन की बनाई गई GoogleService-Info.plist फ़ाइल की जगह की जानकारी देने पर, Crashlytics को आपके Firebase ऐप्लिकेशन के साथ dSYMs जोड़ने की सुविधा मिलती है.
    • अपने ऐप्लिकेशन के एक्सीक्यूटेबल की जगह की जानकारी देने से, रन स्क्रिप्ट को एक ही dSYM के डुप्लीकेट अपलोड को रोकने में मदद मिलती है. ध्यान दें कि ऐप्लिकेशन के बिनेरी अपलोड नहीं किए जाते.

अगर रन स्क्रिप्ट मौजूद है, तो dSYM से जुड़ी समस्याओं को हल करने के लिए, Apple के हिसाब से बनी गाइड देखें. अगर आपको बताई गई प्रोसेस का इस्तेमाल करके, अपनी dSYM फ़ाइलें अपलोड करनी हैं, तो आपको ये अतिरिक्त चरण पूरे करने होंगे:

  1. अपने Apple ऐप्लिकेशन का Firebase ऐप्लिकेशन आईडी ढूंढें. यह आईडी दो जगहों पर मिल सकता है:

    • Firebase कंसोल में, अपने > प्रोजेक्ट सेटिंग पर जाएं. नीचे की ओर स्क्रोल करके, आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपने Firebase Apple ऐप्लिकेशन पर क्लिक करके, ऐप्लिकेशन की जानकारी देखें. इसमें, ऐप्लिकेशन का ऐप्लिकेशन आईडी भी शामिल है.

    • अपने Flutter प्रोजेक्ट की टॉप-लेवल डायरेक्ट्री में, अपनी firebase_options.dart फ़ाइल ढूंढें. आपके Apple ऐप्लिकेशन के Firebase ऐप्लिकेशन आईडी को GOOGLE_APP_ID के तौर पर लेबल किया गया है.

  2. upload-symbols स्क्रिप्ट को चलाते समय, -gsp /path/to/GoogleService-Info.plist के बजाय -ai FIREBASE_APPLE_APP_ID का इस्तेमाल करें.

Flutter और Crashlytics के लिए अपने वर्शन कॉन्फ़िगरेशन की जांच करें (अगर --split-debug-info फ़्लैग का इस्तेमाल किया जा रहा है)

अगर आपका Flutter प्रोजेक्ट --split-debug-info फ़्लैग (और ज़रूरत पड़ने पर, --obfuscate फ़्लैग भी) का इस्तेमाल करता है, तो आपके ऐप्लिकेशन के लिए पढ़े जा सकने वाले स्टैक ट्रेस दिखाने के लिए, कुछ और चरण पूरे करने होंगे.

पक्का करें कि आपका प्रोजेक्ट, सुझाए गए वर्शन कॉन्फ़िगरेशन (Flutter 3.12.0 और Crashlytics Flutter प्लग इन 3.3.4+) का इस्तेमाल कर रहा हो, ताकि आपका प्रोजेक्ट Crashlytics पर Flutter सिंबल (dSYM फ़ाइलें) अपने-आप जनरेट और अपलोड कर सके.

Android

अपनी डिपेंडेंसी का कॉन्फ़िगरेशन देखना

flutterfire configure कमांड, आपके प्रोजेक्ट की Gradle बिल्ड फ़ाइलों में ज़रूरी डिपेंडेंसी जोड़ने की कोशिश करता है. इन डिपेंडेंसी के बिना, Firebase कंसोल में क्रैश रिपोर्ट को छिपाया जा सकता है. ऐसा तब होता है, जब छिपाने की सुविधा चालू हो.

पक्का करें कि प्रोजेक्ट-लेवल build.gradle और ऐप्लिकेशन-लेवल build.gradle में ये लाइनें मौजूद हों:

  • प्रोजेक्ट-लेवल बिल्ड फ़ाइल (android/build.gradle) में, यह लाइन देखें:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • ऐप्लिकेशन-लेवल की बिल्ड फ़ाइल (android/app/build.gradle) में, यह लाइन देखें:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

देखें कि Flutter सिंबल अपलोड करने के लिए, सीएलआई का इस्तेमाल किया जा रहा है या नहीं (--split-debug-info फ़्लैग का इस्तेमाल करने पर)

अगर आपका Flutter प्रोजेक्ट --split-debug-info फ़्लैग (और ज़रूरत पड़ने पर, --obfuscate फ़्लैग भी) का इस्तेमाल करता है, तो आपके ऐप्लिकेशन के लिए पढ़े जा सकने वाले स्टैक ट्रेस दिखाने के लिए, कुछ और चरण पूरे करने होंगे.

Flutter डीबग सिंबल अपलोड करने के लिए, Firebase CLI (v.11.9.0+) का इस्तेमाल करें. आपको गुप्त कोड वाले बिल्ड से क्रैश की शिकायत करने से पहले, डीबग सिंबल अपलोड करने होंगे.

अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से, यह कमांड चलाएं:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID: आपका Firebase Android ऐप्लिकेशन आईडी (पैकेज का नाम नहीं)
    Firebase Android ऐप्लिकेशन आईडी का उदाहरण: 1:567383003300:android:17104a2ced0c9b9b

    Firebase ऐप्लिकेशन आईडी ढूंढने के दो तरीके यहां दिए गए हैं:

    • आपकी google-services.json फ़ाइल में, आपका ऐप्लिकेशन आईडी, mobilesdk_app_id वैल्यू है; या

    • Firebase कंसोल में, अपने प्रोजेक्ट की सेटिंग पर जाएं. नीचे की ओर स्क्रोल करके, आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, जिस Firebase ऐप्लिकेशन का ऐप्लिकेशन आईडी ढूंढना है उस पर क्लिक करें.

  • PATH/TO/symbols: यह वही डायरेक्ट्री है जिसे ऐप्लिकेशन बनाते समय, --split-debug-info फ़्लैग को पास किया जाता है

अगर समस्याएं बनी रहती हैं, तो Android के लिए, बदली गई रिपोर्ट से जुड़ी समस्या हल करने की गाइड देखें.