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

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

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

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

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

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

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

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

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

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 NDK) एनडीके की क्रैश रिपोर्ट में मेटाडेटा जोड़ना

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

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

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

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

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

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

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

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

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

Crashlytics से, ऐप्लिकेशन के क्रैश होने की जानकारी को अपने-आप रिपोर्ट करने की सुविधा मिलती है. इसके अलावा, 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 को डेटा भेजने की सुविधा चालू की जा सकती है. ऐसा तब करें, जब आपने कोड में डेटा भेजने का विकल्प चुना हो:

  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 से जुड़ी समस्याओं की सूची के सबसे ऊपर मौजूद क्रैश की अहम जानकारी मेन्यू में जाकर, क्रैश की अहम जानकारी से ऑप्ट-आउट किया जा सकता है.