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

इस क्विकस्टार्ट में बताया गया है कि Crashlytics Flutter प्लगिन के साथ अपने ऐप्लिकेशन में Firebase Crashlytics को कैसे सेट अप किया जाता है, ताकि 'Firebase कंसोल' में ऐप्लिकेशन की क्रैश रिपोर्ट से जुड़ी पूरी जानकारी मिल सके.

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

शुरू करने से पहले

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

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

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

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

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

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

  1. Crashlytics के लिए Flutter प्लगिन इंस्टॉल करने के लिए, अपने 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+) का इस्तेमाल किया जा रहा है. इससे आपका प्रोजेक्ट Crashlytics पर 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 पर गंभीर गड़बड़ियों और ANR से जुड़ी गड़बड़ियों की निगरानी कर रहा है. अपनी सभी रिपोर्ट और आंकड़े देखने और उनकी जांच करने के लिए, Crashlytics डैशबोर्ड पर जाएं.

अगले चरण