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

प्लैटफ़ॉर्म चुनें: iOS+ Android Flutter Unity


किसी समस्या के बारे में ज़्यादा जानकारी पाने के लिए, DevOps और ऑडियंस की दिलचस्पी > Crashlytics डैशबोर्ड में जाकर, उस समस्या पर क्लिक करें. इसके बाद, आपको इवेंट की ज़्यादा जानकारी वाली रिपोर्ट दिखेगी.Firebase इन रिपोर्ट को अपनी ज़रूरत के हिसाब से बनाया जा सकता है. इससे आपको यह बेहतर ढंग से समझने में मदद मिलती है कि आपके ऐप्लिकेशन में क्या हो रहा है और इवेंट किन वजहों से हुए जिनकी रिपोर्ट Crashlytics को दी गई है.

कस्टम बटन जोड़ना

कस्टम बटन की मदद से, आपको यह पता चलता है कि क्रैश होने से पहले, आपके ऐप्लिकेशन की स्थिति क्या थी. अपनी क्रैश रिपोर्ट के साथ, की-वैल्यू पेयर जोड़े जा सकते हैं. इसके बाद, क्रैश रिपोर्ट को खोजने और फ़िल्टर करने के लिए, कस्टम बटन का इस्तेमाल किया जा सकता है. DevOps और ऑडियंस की दिलचस्पी > Crashlytics डैशबोर्ड में, Firebase कंसोल का इस्तेमाल किया जा सकता है.

  • कस्टम बटन से मेल खाने वाली समस्याओं को खोजा जा सकता है.

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

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

Kotlin

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

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

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 कंसोल के DevOps और ऑडियंस की दिलचस्पी > Crashlytics डैशबोर्ड में जाएं.

Crashlytics

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

Kotlin

Firebase.crashlytics.log("message")

Java

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

यूज़र आइडेंटिफ़ायर सेट करना

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

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

Kotlin

Firebase.crashlytics.setUserId("user123456789")

Java

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

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

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

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

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

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

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

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

Firebase कंसोल के DevOps और ऑडियंस की दिलचस्पी > Crashlytics डैशबोर्ड में, इस डेटा के साथ ये काम किए जा सकते हैं:

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

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

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

नुकसान न पहुंचाने वाली गड़बड़ी की रिपोर्ट करना

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

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

Kotlin

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
}

इसके अलावा, आप खास नुकसान न पहुंचाने वाली गड़बड़ी के साथ, कस्टम बटन भी अटैच कर सकते हैं. उदाहरण के लिए:

Kotlin

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e) {
        key("string key", "string value")
        key("boolean key", true)
        key("float key", Float.MAX_VALUE)
    }
    // handle your exception here
}

Java

try {
    methodThatThrows();
} catch (Exception e) {
    CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
            .putString("string key", "string value")
            .putBoolean("boolean key", true)
            .putFloat("float key", Float.MAX_VALUE)
            .build();
    FirebaseCrashlytics.getInstance().recordException(e, keysAndValues);
    // handle your exception here
}

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

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

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

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

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

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

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

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

ऑप्ट-इन रिपोर्टिंग की सुविधा चालू करना

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

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

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

    Kotlin

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

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

Crash Insights के डेटा को मैनेज करना

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

Crash Insights, स्थिरता से जुड़े सामान्य ट्रेंड की पहचान करने के लिए, क्रैश के एग्रीगेट किए गए डेटा का इस्तेमाल करता है. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो Firebase कंसोल के DevOps और जुड़ाव > Crashlytics डैशबोर्ड में, समस्याओं की सूची में सबसे ऊपर मौजूद Crash Insights मेन्यू में जाकर, Crash Insights से बाहर हुआ जा सकता है.

अगले चरण