यह मार्गदर्शिका बताती है कि फायरबेस क्रैशलाइटिक्स एसडीके का उपयोग करके अपनी क्रैश रिपोर्ट को कैसे अनुकूलित करें। डिफ़ॉल्ट रूप से, क्रैशलाइटिक्स स्वचालित रूप से आपके ऐप के सभी उपयोगकर्ताओं के लिए क्रैश रिपोर्ट एकत्र करता है (आप स्वचालित क्रैश रिपोर्टिंग को बंद कर सकते हैं और इसके बजाय अपने उपयोगकर्ताओं के लिए ऑप्ट-इन रिपोर्टिंग सक्षम कर सकते हैं )। क्रैशलिटिक्स बॉक्स से बाहर चार लॉगिंग तंत्र प्रदान करता है: कस्टम कुंजी , कस्टम लॉग , उपयोगकर्ता पहचानकर्ता , और पकड़े गए अपवाद ।
कस्टम कुंजियाँ जोड़ें
कस्टम कुंजियाँ आपके ऐप की क्रैश होने तक की विशिष्ट स्थिति जानने में आपकी सहायता करती हैं। आप अपनी क्रैश रिपोर्ट के साथ मनमाने ढंग से कुंजी/मान जोड़े को जोड़ सकते हैं, फिर फायरबेस कंसोल में क्रैश रिपोर्ट को खोजने और फ़िल्टर करने के लिए कस्टम कुंजियों का उपयोग कर सकते हैं।
क्रैशलिटिक्स डैशबोर्ड में, आप कस्टम कुंजी से मेल खाने वाले मुद्दों की खोज कर सकते हैं।
जब आप कंसोल में किसी विशिष्ट मुद्दे की समीक्षा कर रहे होते हैं, तो आप प्रत्येक ईवेंट के लिए संबंधित कस्टम कुंजियाँ ( कुंजियाँ उपटैब) देख सकते हैं और यहां तक कि कस्टम कुंजियों द्वारा ईवेंट को फ़िल्टर भी कर सकते हैं (पृष्ठ के शीर्ष पर फ़िल्टर मेनू)।
कुंजी/मूल्य जोड़े सेट करने के लिए 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 }
सभी रिकॉर्ड किए गए अपवाद फ़ायरबेस कंसोल में गैर-घातक मुद्दों के रूप में दिखाई देते हैं। समस्या सारांश में एंड्रॉइड संस्करण और हार्डवेयर डिवाइस द्वारा ब्रेकडाउन के साथ-साथ क्रैश से प्राप्त होने वाली सभी स्थिति जानकारी शामिल होती है।
क्रैशलिटिक्स आपके ऐप पर प्रदर्शन प्रभाव को कम करने के लिए एक समर्पित पृष्ठभूमि थ्रेड पर अपवादों को संसाधित करता है। आपके उपयोगकर्ताओं के नेटवर्क ट्रैफ़िक को कम करने के लिए, क्रैशलिटिक्स बैच अपवादों को एक साथ लॉग करता है और अगली बार ऐप लॉन्च होने पर उन्हें भेजता है।
ऑप्ट-इन रिपोर्टिंग सक्षम करें
डिफ़ॉल्ट रूप से, Crashlytics स्वचालित रूप से आपके ऐप के सभी उपयोगकर्ताओं के लिए क्रैश रिपोर्ट एकत्र करता है। उपयोगकर्ताओं को उनके द्वारा भेजे गए डेटा पर अधिक नियंत्रण देने के लिए, आप स्वचालित रिपोर्टिंग को अक्षम करके ऑप्ट-इन रिपोर्टिंग सक्षम कर सकते हैं और केवल तभी क्रैशलाईटिक्स को डेटा भेज सकते हैं जब आप अपने कोड में चुनते हैं:
अपनी
AndroidManifest.xml
फ़ाइल केapplication
ब्लॉक में, स्वचालित संग्रह बंद करने के लिए एकmeta-data
टैग जोड़ें:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
रनटाइम पर क्रैशलाईटिक्स डेटा संग्रह ओवरराइड को कॉल करके चुनिंदा उपयोगकर्ताओं के लिए संग्रह सक्षम करें। ओवरराइड मान आपके ऐप के लॉन्च के दौरान बना रहता है इसलिए क्रैशलाइटिक्स स्वचालित रूप से रिपोर्ट एकत्र कर सकता है। स्वचालित क्रैश रिपोर्टिंग से बाहर निकलने के लिए, ओवरराइड मान के रूप में
false
पास करें। जबfalse
पर सेट किया जाता है, तो नया मान ऐप के अगले रन तक लागू नहीं होता है।Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
क्रैश इनसाइट डेटा प्रबंधित करें
क्रैश इनसाइट्स आपके अज्ञात स्टैक ट्रेस की तुलना अन्य फायरबेस ऐप्स के ट्रेस से करके आपको समस्याओं को हल करने में मदद करता है और आपको बताता है कि क्या आपकी समस्या एक बड़े रुझान का हिस्सा है। कई मुद्दों के लिए, क्रैश इनसाइट्स आपको क्रैश को डीबग करने में मदद करने के लिए संसाधन भी प्रदान करता है।
क्रैश इनसाइट्स सामान्य स्थिरता रुझानों की पहचान करने के लिए एकत्रित क्रैश डेटा का उपयोग करता है। यदि आप अपने ऐप का डेटा साझा नहीं करना चाहते हैं, तो आप फायरबेस कंसोल में अपनी क्रैशलिटिक्स समस्या सूची के शीर्ष पर क्रैश इनसाइट्स मेनू से क्रैश इनसाइट्स से ऑप्ट-आउट कर सकते हैं।