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


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

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

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

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

  2. सुझाया गया: क्रैश, नॉन-फ़ैटल या एएनआर इवेंट से पहले उपयोगकर्ता की कार्रवाइयों को समझने के लिए, ब्रेडक्रंब लॉग अपने-आप पाने के लिए, आपको अपने 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: 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

      • 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. अपने ऐप्लिकेशन में ऐसा कोड जोड़ें जिसका इस्तेमाल करके, टेस्ट के दौरान होने वाली गड़बड़ी को ठीक किया जा सके.

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

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

  3. अपने ऐप्लिकेशन की पहली रिपोर्ट भेजने के लिए, टेस्ट एक्सेप्शन को थ्रो करें:

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

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

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

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


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

अगले चरण