Firebase Crashlytics का इस्तेमाल शुरू करना

इस क्विकस्टार्ट में, Crashlytics Flutter प्लगिन की मदद से Firebase Crashlytics को सेट अप करने का तरीका बताया गया है. इससे Firebase कंसोल में क्रैश की पूरी रिपोर्ट मिल सकती है.

Crashlytics को सेट अप करने के लिए, कमांड-लाइन टूल और आईडीई, दोनों का इस्तेमाल किया जाता है. सेटअप पूरा करने के लिए, Firebase को अपनी पहली क्रैश रिपोर्ट भेजने के लिए, आपको टेस्ट अपवाद लागू करना होगा.

वेब कंटेनर इंस्टॉल करने से पहले

  1. अगर आपने पहले से ऐसा नहीं किया है, तो अपने Flutter प्रोजेक्ट में Firebase को कॉन्फ़िगर और शुरू करें.

  2. सुझाव: अपने-आप ब्रेडक्रंब लॉग पाने के लिए, आपको अपने Firebase प्रोजेक्ट में Google Analytics चालू करना होगा. इससे उपयोगकर्ता की उन कार्रवाइयों को समझने में मदद मिलेगी जो क्रैश होने, नुकसान न पहुंचाने वाली या ANR इवेंट की वजह से होती हैं.

    • अगर आपके मौजूदा Firebase प्रोजेक्ट में Google Analytics चालू नहीं है, तो आप Firebase कंसोल में > प्रोजेक्ट सेटिंग के इंटिग्रेशन टैब से Google Analytics को चालू कर सकते हैं.

    • अगर कोई नया Firebase प्रोजेक्ट बनाया जा रहा है, तो प्रोजेक्ट बनाने के वर्कफ़्लो के दौरान Google Analytics चालू करें.

    ध्यान दें कि ब्रेडक्रंब लॉग, उन सभी Android और Apple प्लैटफ़ॉर्म के लिए उपलब्ध हैं जो Crashlytics के साथ काम करते हैं. हालांकि, यह सुविधा WatchOS के साथ काम करती है.

पहला चरण: अपने Flutter प्रोजेक्ट में Crashlytics जोड़ना

  1. अपने Flutter प्रोजेक्ट के रूट से, Crashlytics के लिए Flutter प्लगिन इंस्टॉल करने के लिए यह कमांड चलाएं.

    ब्रेडक्रंब लॉग का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन में Google Analytics के लिए Flutter प्लगिन भी जोड़ें. पक्का करें कि आपके Firebase प्रोजेक्ट में Google Analytics चालू हो.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से, यह कमांड चलाएं:

    flutterfire configure
    

    इस निर्देश को चलाने से यह पक्का होता है कि आपके Flutter ऐप्लिकेशन का Firebase कॉन्फ़िगरेशन अप-टू-डेट है. साथ ही, Android के लिए, यह आपके ऐप्लिकेशन में Crashlytics Gradle प्लग इन जोड़ देता है.

  3. पूरा हो जाने के बाद, अपना Flutter प्रोजेक्ट फिर से बनाएं:

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

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

    • Android: फ़्लटर डीबग सिंबल को अपलोड करने के लिए, Firebase सीएलआई (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

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

दूसरा चरण: क्रैश हैंडलर कॉन्फ़िगर करना

FlutterError.onError को FirebaseCrashlytics.instance.recordFlutterFatalError से ओवरराइड करने पर, Flutter फ़्रेमवर्क में आने वाली सभी गड़बड़ियां अपने-आप कैच की जा सकती हैं:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

एसिंक्रोनस गड़बड़ियों को पहचानने के लिए, जिन्हें Flutter फ़्रेमवर्क से मैनेज नहीं किया जाता है, PlatformDispatcher.instance.onError का इस्तेमाल करें:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

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

तीसरा चरण: सेटअप पूरा करने के लिए, टेस्ट क्रैश को हर हाल में पूरा करें

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

  1. अपने ऐप्लिकेशन में ऐसा कोड जोड़ें जिसका इस्तेमाल करके, जांच के अपवाद को ज़बरदस्ती हटाया जा सके.

    अगर आपने कोई ऐसा गड़बड़ी हैंडलर जोड़ा है जो FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) को टॉप लेवल Zone पर कॉल करता है, तो अपने ऐप्लिकेशन में बटन जोड़ने के लिए इस कोड का इस्तेमाल किया जा सकता है. इस बटन को दबाने पर, अपवाद की जांच की जा सकती है:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. अपना ऐप्लिकेशन बनाएं और चलाएं.

  3. अपने ऐप्लिकेशन की पहली रिपोर्ट को भेजने के लिए, जांच के अपवाद को हर हाल में छोड़ें:

    1. अपने टेस्ट डिवाइस या एम्युलेटर से ऐप्लिकेशन खोलें.

    2. अपने ऐप्लिकेशन में, जांच के अपवाद वाले उस बटन को दबाएं जिसे आपने ऊपर दिए गए कोड का इस्तेमाल करके जोड़ा है.

  4. अपने टेस्ट क्रैश को देखने के लिए Firebase कंसोल के Crashlytics डैशबोर्ड पर जाएं.

    अगर आपने कंसोल रीफ़्रेश कर दिया है और पांच मिनट बाद भी टेस्ट क्रैश नहीं दिख रहा है, तो डीबग लॉगिंग को चालू करें. इससे आपको पता चलेगा कि आपका ऐप्लिकेशन क्रैश रिपोर्ट भेज रहा है या नहीं.


बस इतना ही! Crashlytics, अब आपके ऐप्लिकेशन के क्रैश होने और Android पर, नुकसान न पहुंचाने वाली गड़बड़ियों और एएनआर के मामलों को मॉनिटर करता है. अपनी सभी रिपोर्ट और आंकड़ों को देखने और उनकी जांच करने के लिए, Crashlytics डैशबोर्ड पर जाएं.

अगले चरण