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

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


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

  • अपने ऐप्लिकेशन को इंस्ट्रूमेंट करें, ताकि कस्टम बटन, कस्टम लॉग मैसेज, और यूज़र आइडेंटिफ़ायर लॉग किए जा सकें.

  • अपवादों को Crashlytics को रिपोर्ट करें.

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

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

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

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

अगले चरण

  • अपने डेटा को BigQuery या Cloud Logging में एक्सपोर्ट करें, ताकि उसे गहराई से समझा जा सके. साथ ही, डेटा के लिए क्वेरी करना, कस्टम डैशबोर्ड बनाना, और कस्टम अलर्ट सेट अप करना जैसी सुविधाएं इस्तेमाल की जा सकें.