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 को चालू करें.

    ध्यान दें कि ब्रेडक्रंब लॉग, Crashlytics के साथ काम करने वाले सभी Android और Apple प्लैटफ़ॉर्म (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 सीएलआई (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 फ़्लैग को पास किया जाता है

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

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

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

अगले चरण