अपनी फायरबेस क्रैशलाइटिक्स क्रैश रिपोर्ट को अनुकूलित करें

क्रैशलिटिक्स डैशबोर्ड में, आप किसी समस्या पर क्लिक कर सकते हैं और विस्तृत ईवेंट रिपोर्ट प्राप्त कर सकते हैं। आपके ऐप में क्या हो रहा है और क्रैशलिटिक्स को रिपोर्ट की गई घटनाओं के आसपास की परिस्थितियों को बेहतर ढंग से समझने में मदद के लिए आप उन रिपोर्टों को कस्टमाइज़ कर सकते हैं।

  • यदि आपका ऐप Google Analytics के लिए फायरबेस एसडीके का उपयोग करता है तो स्वचालित रूप से ब्रेडक्रंब लॉग प्राप्त करें। ये लॉग आपको आपके ऐप में क्रैशलाईटिक्स-एकत्रित ईवेंट तक ले जाने वाली उपयोगकर्ता गतिविधियों की दृश्यता प्रदान करते हैं।

  • स्वचालित क्रैश रिपोर्टिंग बंद करें और अपने उपयोगकर्ताओं के लिए ऑप्ट-इन रिपोर्टिंग सक्षम करें । ध्यान दें कि, डिफ़ॉल्ट रूप से, 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

कोटलिन के लिए, मौजूदा कार्यक्षमता 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);

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

दुर्घटना की ओर ले जाने वाली घटनाओं के बारे में स्वयं को अधिक संदर्भ देने के लिए, आप अपने ऐप में कस्टम क्रैशलिटिक्स लॉग जोड़ सकते हैं। क्रैशलाईटिक्स लॉग को आपके क्रैश डेटा के साथ जोड़ता है और उन्हें लॉग टैब के अंतर्गत फायरबेस कंसोल के क्रैशलाईटिक्स पृष्ठ में प्रदर्शित करता है।

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

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

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

उपयोगकर्ता पहचानकर्ता सेट करें

किसी समस्या का निदान करने के लिए, यह जानना अक्सर सहायक होता है कि आपके किन उपयोगकर्ताओं को किसी क्रैश का अनुभव हुआ है। क्रैशलाइटिक्स में आपकी क्रैश रिपोर्ट में उपयोगकर्ताओं को गुमनाम रूप से पहचानने का एक तरीका शामिल है।

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

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

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

यदि आपको किसी उपयोगकर्ता पहचानकर्ता को सेट करने के बाद उसे साफ़ करने की आवश्यकता हो, तो मान को एक रिक्त स्ट्रिंग पर रीसेट करें। उपयोगकर्ता पहचानकर्ता को साफ़ करने से मौजूदा क्रैशलिटिक्स रिकॉर्ड नहीं हटते। यदि आपको उपयोगकर्ता आईडी से जुड़े रिकॉर्ड हटाने की आवश्यकता है, तो फायरबेस समर्थन से संपर्क करें

(केवल एंड्रॉइड एनडीके) एनडीके क्रैश रिपोर्ट में मेटाडेटा जोड़ें

कस्टम कुंजी, कस्टम लॉग , उपयोगकर्ता पहचानकर्ता जैसे एनडीके क्रैश रिपोर्ट में मेटाडेटा जोड़ने के लिए आप वैकल्पिक रूप से अपने C++ कोड में crashlytics.h हेडर शामिल कर सकते हैं। इन सभी विकल्पों का वर्णन ऊपर इस पृष्ठ पर किया गया है।

crashlytics.h फायरबेस एंड्रॉइड एसडीके गिटहब रिपोजिटरी में केवल हेडर सी++ लाइब्रेरी के रूप में उपलब्ध है।

एनडीके सी++ एपीआई का उपयोग करने के निर्देशों के लिए हेडर फ़ाइल में टिप्पणियाँ पढ़ें।

मेमोरी भ्रष्टाचार के मुद्दों को डीबग करने के लिए GWP-ASan रिपोर्ट शामिल करें

क्रैशलाइटिक्स GWP-ASan रिपोर्ट एकत्रित करके मूल मेमोरी त्रुटियों के कारण होने वाले क्रैश को डीबग करने में आपकी सहायता कर सकता है। ये मेमोरी-संबंधित त्रुटियां आपके ऐप के भीतर मेमोरी भ्रष्टाचार से जुड़ी हो सकती हैं, जो ऐप सुरक्षा कमजोरियों का प्रमुख कारण है।

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

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

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

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

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

अपने ऐप के 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
}

सभी रिकॉर्ड किए गए अपवाद फ़ायरबेस कंसोल में गैर-घातक मुद्दों के रूप में दिखाई देते हैं। समस्या सारांश में एंड्रॉइड संस्करण और हार्डवेयर डिवाइस द्वारा ब्रेकडाउन के साथ-साथ क्रैश से प्राप्त होने वाली सभी स्थिति जानकारी शामिल होती है।

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

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

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

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

एनालिटिक्स एसडीके स्वचालित रूप से screen_view इवेंट को लॉग करता है जो ब्रेडक्रंब लॉग को क्रैश, गैर-घातक या एएनआर इवेंट से पहले देखी गई स्क्रीन की सूची दिखाने में सक्षम बनाता है। screen_view ब्रेडक्रंब लॉग में एक firebase_screen_class पैरामीटर होता है।

ब्रेडक्रंब लॉग किसी भी कस्टम ईवेंट से भी भरे जाते हैं जिन्हें आप उपयोगकर्ता के सत्र में मैन्युअल रूप से लॉग करते हैं, जिसमें ईवेंट का पैरामीटर डेटा भी शामिल होता है। यह डेटा क्रैश, गैर-घातक, या ANR ईवेंट तक ले जाने वाली उपयोगकर्ता गतिविधियों की एक श्रृंखला दिखाने में मदद कर सकता है।

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

ऑप्ट-इन रिपोर्टिंग सक्षम करें

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

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

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

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

क्रैश इनसाइट डेटा प्रबंधित करें

क्रैश इनसाइट्स आपके अज्ञात स्टैक ट्रेस की तुलना अन्य फायरबेस ऐप्स के ट्रेस से करके आपको समस्याओं को हल करने में मदद करता है और आपको बताता है कि क्या आपकी समस्या एक बड़े रुझान का हिस्सा है। कई मुद्दों के लिए, क्रैश इनसाइट्स आपको क्रैश को डीबग करने में मदद करने के लिए संसाधन भी प्रदान करता है।

क्रैश इनसाइट्स सामान्य स्थिरता रुझानों की पहचान करने के लिए एकत्रित क्रैश डेटा का उपयोग करता है। यदि आप अपने ऐप का डेटा साझा नहीं करना चाहते हैं, तो आप फायरबेस कंसोल में अपनी क्रैशलिटिक्स समस्या सूची के शीर्ष पर क्रैश इनसाइट्स मेनू से क्रैश इनसाइट्स से ऑप्ट-आउट कर सकते हैं।