Flutter के लिए Crashlytics का इस्तेमाल शुरू करना

प्लैटफ़ॉर्म चुनें: iOS+ Android Android NDK Flutter Unity


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

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

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

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

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

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

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

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

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

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

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

    ब्रेडक्रंब लॉग का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन में 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 फ़ाइलें) को अपने-आप जनरेट और अपलोड कर सके Crashlytics.

    • Android: Flutter डीबग सिंबल अपलोड करने के लिए, Firebase CLI (वर्शन 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());
}

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

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 कंसोल में DevOps और उपयोगकर्ता जुड़ाव > Crashlytics डैशबोर्ड पर जाएं.

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


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

अगले चरण