Firebase Crashlytics की क्रैश रिपोर्ट को पसंद के मुताबिक बनाएं

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

  • अगर आपका ऐप्लिकेशन Google Analytics के लिए Firebase SDK टूल का इस्तेमाल करता है, तो आपको अपने-आप ब्रेडक्रंब लॉग मिलेंगे. इन लॉग से, आपको उपयोगकर्ता की उन कार्रवाइयों की जानकारी मिलती है जो आपके ऐप्लिकेशन में Crashlytics से इकट्ठा किए गए इवेंट के बाद की जाती हैं.

  • ऐप्लिकेशन के अपने-आप बंद होने की रिपोर्टिंग की सुविधा बंद करें और अपने उपयोगकर्ताओं के लिए, ऑप्ट-इन की रिपोर्टिंग चालू करें. ध्यान दें कि डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए क्रैश रिपोर्ट अपने-आप इकट्ठा करता है.

कस्टम कुंजियां जोड़ें

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

  • Crashlytics के डैशबोर्ड में, कस्टम पासकोड से मैच होने वाली समस्याएं खोजी जा सकती हैं.

  • कंसोल में किसी खास समस्या की समीक्षा करते समय, हर इवेंट से जुड़ी कस्टम कुंजियां (कुंजी सबटैब) देखी जा सकती हैं. साथ ही, इवेंट को कस्टम कुंजियों (पेज के सबसे ऊपर मौजूद फ़िल्टर मेन्यू) के हिसाब से फ़िल्टर भी किया जा सकता है.

कुंजी/वैल्यू पेयर को सेट करने के लिए, setCustomKey इंस्टेंस तरीके का इस्तेमाल करें. ध्यान दें कि किसी भी प्रिमिटिव या String आर्ग्युमेंट को स्वीकार करने के लिए, value पैरामीटर के लिए setCustomKey ओवरलोड हो गया है. यहां कुछ उदाहरण दिए गए हैं:

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true) // boolean value
    key("my_double_key", 1.0) // double value
    key("my_float_key", 1.0f) // float value
    key("my_int_key", 1) // int value
}

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

आपके पास किसी कुंजी को कॉल करने और उसे किसी दूसरी वैल्यू पर सेट करने का भी विकल्प है. उदाहरण के लिए:

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

setCustomKeys इंस्टेंस तरीके में CustomKeysAndValues का इंस्टेंस पास करके, एक साथ कई कुंजी/वैल्यू पेयर जोड़ें:

Kotlin+KTX

Kotlin के लिए, मौजूदा फ़ंक्शन, CustomKeysAndValues बिल्डर के मुकाबले ज़्यादा आसान है.

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}

Java

CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

कस्टम लॉग मैसेज जोड़ें

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

समस्याओं का पता लगाने के लिए, log का इस्तेमाल करें. उदाहरण के लिए:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

उपयोगकर्ता आइडेंटिफ़ायर सेट करना

किसी समस्या का पता लगाने के लिए, यह जानना अक्सर मददगार होता है कि आपके किन उपयोगकर्ताओं को ऐप्लिकेशन क्रैश होने की समस्या का सामना करना पड़ा. Crashlytics का इस्तेमाल करके, ऐप्लिकेशन की क्रैश रिपोर्ट में उपयोगकर्ताओं की पहचान छिपाकर उनकी पहचान की जा सकती है.

अपनी रिपोर्ट में यूज़र आईडी जोड़ने के लिए, हर उपयोगकर्ता को आईडी नंबर, टोकन या हैश की गई वैल्यू के तौर पर एक यूनीक आइडेंटिफ़ायर असाइन करें:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

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

(सिर्फ़ Android एनडीके के लिए) एनडीके की क्रैश रिपोर्ट में मेटाडेटा जोड़ना

एनडीके क्रैश रिपोर्ट में मेटाडेटा जोड़ने के लिए, C++ कोड में crashlytics.h हेडर को भी शामिल किया जा सकता है. जैसे, कस्टम पासकोड, कस्टम लॉग, उपयोगकर्ता आइडेंटिफ़ायर. इन सभी विकल्पों के बारे में ऊपर इस पेज पर बताया गया है.

crashlytics.h, Firebase Android SDK GitHub रिपॉज़िटरी में सिर्फ़ हेडर वाली C++ लाइब्रेरी के तौर पर उपलब्ध है.

NDK C++ API इस्तेमाल करने के बारे में निर्देशों के लिए, हेडर फ़ाइल में टिप्पणियां पढ़ें.

मेमोरी के खराब होने की समस्याओं को डीबग करने के लिए, GWP-ASan की रिपोर्ट शामिल करें

Crashlytics, GWP-ASan की रिपोर्ट इकट्ठा करके, नेटिव मेमोरी की गड़बड़ियों की वजह से होने वाले क्रैश को डीबग करने में आपकी मदद कर सकता है. मेमोरी से जुड़ी ये गड़बड़ियां आपके ऐप्लिकेशन में मेमोरी से जुड़ी गड़बड़ी से जुड़ी हो सकती हैं, जो ऐप्लिकेशन की सुरक्षा से जुड़ी कमज़ोरियों की मुख्य वजह है.

  • Crashlytics के डैशबोर्ड में किसी समस्या की जानकारी पर क्लिक करके, इस डेटा को एक नए "मेमोरी स्टैक ट्रेस" टैब में देखा जा सकता है.

  • इस डेटा की सभी समस्याओं को तुरंत देखने के लिए, नए "GWP-ASan रिपोर्ट" सिग्नल और फ़िल्टर का इस्तेमाल किया जा सकता है.

अपने ऐप्लिकेशन में GWP-ASan को साफ़ तौर पर चालू करने और NDK v18.3.6+ (Firebase BoM v31.3.0+) के लिए, Crashlytics SDK टूल का इस्तेमाल करने पर आपको GWP-ASan की मेमोरी की रिपोर्ट मिल सकती है. इसके लिए, आपको GWP-ASan के सेटअप की जांच करने का विकल्प मिलता है. इसके लिए, Android दस्तावेज़ में दिए गए नेटिव कोड का इस्तेमाल करें.

गैर-घातक अपवादों की रिपोर्ट करें

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

अपने ऐप्लिकेशन के catch ब्लॉक में, नुकसान न पहुंचाने वाले अपवादों को रिकॉर्ड करने के लिए, recordException तरीके का इस्तेमाल करें. उदाहरण के लिए:

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

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

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

ब्रेडक्रंब लॉग पाएं

ब्रेडक्रंब लॉग से, आपको किसी उपयोगकर्ता के ऐसे इंटरैक्शन को बेहतर तरीके से समझने में मदद मिलती है जो आपके ऐप्लिकेशन के साथ हुए. किसी समस्या को दोबारा समझने और उसे डीबग करने की कोशिश करते समय, इन लॉग से आपको मदद मिल सकती है.

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

Analytics SDK टूल, screen_view इवेंट को अपने-आप लॉग करता है. इसकी मदद से, ब्रेडक्रंब लॉग क्रैश, नुकसान न पहुंचाने वाली या ANR वाली स्क्रीन की सूची को दिखाने के लिए चालू हो जाता है. screen_view ब्रेडक्रंब लॉग में, firebase_screen_class पैरामीटर होता है.

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

ध्यान दें कि आपके पास Google Analytics डेटा के कलेक्शन और उसके इस्तेमाल को कंट्रोल करने का विकल्प है. इसमें, ब्रेडक्रंब लॉग में जानकारी भरने वाला डेटा शामिल होता है.

ऑप्ट-इन रिपोर्टिंग चालू करें

डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए क्रैश रिपोर्ट इकट्ठा करता है. उपयोगकर्ताओं को उनके भेजे जाने वाले डेटा पर ज़्यादा कंट्रोल देने के लिए, अपने-आप रिपोर्टिंग की सुविधा को बंद करके ऑप्ट-इन रिपोर्टिंग को चालू किया जा सकता है. साथ ही, कोड में चुनने के बाद ही Crashlytics को डेटा भेजा जा सकता है:

  1. अपने-आप इकट्ठा होने की सुविधा को बंद करने के लिए, अपनी AndroidManifest.xml फ़ाइल के application ब्लॉक में meta-data टैग जोड़ें:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. रनटाइम के दौरान Crashlytics का डेटा कलेक्शन बदलने की सुविधा का इस्तेमाल करके, चुनिंदा उपयोगकर्ताओं के लिए डेटा कलेक्शन की सुविधा चालू करें. आपके ऐप्लिकेशन के सभी लॉन्च में ओवरराइड वैल्यू बनी रहती है, इसलिए Crashlytics, रिपोर्ट अपने-आप इकट्ठा कर सकता है. ऐप्लिकेशन बंद होने की अपने-आप रिपोर्ट होने की सुविधा से ऑप्ट आउट करने के लिए, false को ओवरराइड वैल्यू के तौर पर पास करें. false पर सेट करने पर, नई वैल्यू तब तक लागू नहीं होती, जब तक ऐप्लिकेशन को अगली बार नहीं चलाया जाता.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

क्रैश की अहम जानकारी का डेटा मैनेज करें

क्रैश इनसाइट की मदद से, समस्याओं को हल किया जा सकता है. इसके लिए, पहचान छिपाने वाले स्टैक ट्रेस की तुलना, Firebase के अन्य ऐप्लिकेशन के ट्रेस से की जाती है. साथ ही, यह भी बताया जाता है कि क्या आपकी समस्या किसी बड़े ट्रेंड का हिस्सा है. कई समस्याओं के लिए, क्रैश इनसाइट, क्रैश को डीबग करने में मदद करने वाले संसाधन भी उपलब्ध कराती है.

क्रैश इनसाइट में, ऐप्लिकेशन क्रैश होने से जुड़े इकट्ठा किए गए डेटा का इस्तेमाल किया जाता है, ताकि स्थिरता से जुड़े सामान्य रुझानों का पता लगाया जा सके. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो Firebase कंसोल में, Crashlytics से जुड़ी समस्या की सूची में सबसे ऊपर मौजूद क्रैश की अहम जानकारी वाले मेन्यू में जाकर, क्रैश की अहम जानकारी से ऑप्ट-आउट किया जा सकता है.