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 report" के नए सिग्नल और फ़िल्टर का भी इस्तेमाल किया जा सकता है.
अगर आपने अपने ऐप्लिकेशन में GWP-ASan को साफ़ तौर पर चालू किया है और NDK v18.3.6+ (Firebase BoM v31.3.0+) के लिए Crashlytics SDK का इस्तेमाल किया है, तो आपको GWP-ASan की मेमोरी रिपोर्ट मिल सकती हैं. Android दस्तावेज़ में दिए गए नेटिव कोड के उदाहरण का इस्तेमाल करके, GWP-ASan सेटअप की जांच की जा सकती है.
गड़बड़ी की ऐसी जानकारी जो काम करने में रुकावट नहीं डालती
आपके ऐप्लिकेशन के बंद होने की अपने-आप रिपोर्ट करने के साथ ही, 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 लॉग किए गए अपवादों को एक साथ बैच में डालता है और अगली बार ऐप्लिकेशन लॉन्च होने पर उन्हें भेजता है.
ब्रेडक्रंब लॉग पाना
ब्रेडक्रंब लॉग से आपको इस बारे में बेहतर जानकारी मिलती है कि उपयोगकर्ता ने आपके ऐप्लिकेशन के साथ कैसे इंटरैक्ट किया, जिसकी वजह से ऐप्लिकेशन क्रैश हुआ, गड़बड़ी हुई या ANR इवेंट हुआ. किसी समस्या को दोहराने और डीबग करने के दौरान, ये लॉग मददगार हो सकते हैं.
ब्रेडक्रंब लॉग, Google Analytics की मदद से काम करते हैं. इसलिए, ब्रेडक्रंब लॉग पाने के लिए, आपको अपने Firebase प्रोजेक्ट के लिए Google Analytics चालू करना होगा. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ना होगा. इन ज़रूरी शर्तों को पूरा करने के बाद, किसी समस्या की जानकारी देखने पर, ब्रेडक्रंब लॉग अपने-आप लॉग टैब में इवेंट के डेटा के साथ शामिल हो जाते हैं.
Analytics SDK टूल, screen_view
इवेंट को अपने-आप लॉग करता है. इससे ब्रेडक्रंब लॉग, क्रैश, नॉन-फ़ैटल या ANR इवेंट से पहले देखी गई स्क्रीन की सूची दिखा पाते हैं. screen_view
ब्रेडक्रंब लॉग में, firebase_screen_class
पैरामीटर होता है.
ब्रेडक्रंब लॉग में ऐसे सभी कस्टम इवेंट अपने-आप भर जाते हैं जिन्हें आपने उपयोगकर्ता के सेशन में मैन्युअल तरीके से लॉग किया है. इसमें इवेंट के पैरामीटर का डेटा भी शामिल है. इस डेटा से, उपयोगकर्ता की उन गतिविधियों की जानकारी मिल सकती है जिनकी वजह से ऐप्लिकेशन क्रैश हुआ, गड़बड़ी हुई या ANR इवेंट हुआ.
ध्यान दें कि आपके पास Google Analytics डेटा को इकट्ठा और इस्तेमाल करने की सुविधा को कंट्रोल करने का विकल्प होता है. इसमें वह डेटा भी शामिल होता है जो ब्रेडक्रंब लॉग में अपने-आप भर जाता है.
ऑप्ट-इन रिपोर्टिंग की सुविधा चालू करना
डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए, क्रैश की रिपोर्ट अपने-आप इकट्ठा करता है. उपयोगकर्ताओं को उनके भेजे जाने वाले डेटा पर ज़्यादा कंट्रोल देने के लिए, अपने-आप रिपोर्टिंग की सुविधा बंद करके ऑप्ट-इन रिपोर्टिंग चालू की जा सकती है. साथ ही, कोड में चुने जाने पर ही Crashlytics को डेटा भेजा जा सकता है:
डेटा अपने-आप इकट्ठा होने की सुविधा बंद करने के लिए, अपनी
AndroidManifest.xml
फ़ाइल केapplication
ब्लॉक मेंmeta-data
टैग जोड़ें:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
रनटाइम के दौरान Crashlytics डेटा कलेक्शन ओवरराइड को कॉल करके, चुनिंदा उपयोगकर्ताओं के लिए डेटा कलेक्शन की सुविधा चालू करें. बदली गई वैल्यू, आपके ऐप्लिकेशन के हर लॉन्च के दौरान बनी रहती है, ताकि Crashlytics अपने-आप रिपोर्ट इकट्ठा कर सके. क्रैश की अपने-आप होने वाली रिपोर्टिंग से ऑप्ट आउट करने के लिए, बदलाव करने की वैल्यू के तौर पर
false
पास करें.false
पर सेट होने पर, नई वैल्यू तब तक लागू नहीं होती, जब तक ऐप्लिकेशन को फिर से नहीं चलाया जाता.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
क्रैश की अहम जानकारी का डेटा मैनेज करना
क्रैश इनसाइट की मदद से, समस्याओं को हल किया जा सकता है. इसके लिए, आपके ऐप्लिकेशन के स्टैक ट्रेस की पहचान छिपाकर, उन्हें Firebase के अन्य ऐप्लिकेशन के ट्रेस से तुलना की जाती है. साथ ही, आपको यह जानकारी भी दी जाती है कि आपकी समस्या किसी बड़े रुझान का हिस्सा है या नहीं. कई समस्याओं के लिए, क्रैश इनसाइट में संसाधन भी उपलब्ध होते हैं, ताकि क्रैश को डीबग करने में आपकी मदद की जा सके.
क्रैश इनसाइट, क्रैश के इकट्ठा किए गए डेटा का इस्तेमाल करके, ऐप्लिकेशन के सामान्य रुझानों की पहचान करती है. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो Firebase कंसोल में Crashlytics समस्याओं की सूची के सबसे ऊपर मौजूद, क्रैश की अहम जानकारी मेन्यू से, क्रैश की अहम जानकारी से ऑप्ट-आउट किया जा सकता है.