Crashlytics डैशबोर्ड में जाकर, क्रैश रिपोर्ट आसानी से पढ़ी जा सकती हैं


Crashlytics Gradle प्लग इन, कोड को अस्पष्ट करने पर अपने-आप पता लगा सकता है. जब आपका बिल्ड कोई मैपिंग फ़ाइल जनरेट करता है, तो प्लगिन उसे अपलोड करता है, ताकि Crashlytics सर्वर इस फ़ाइल का इस्तेमाल करके, आपके ऐप्लिकेशन के स्टैक ट्रेस को बिना छिपे हुए और ऐसे कोड के तौर पर रेंडर कर सकें जिसे कोई भी पढ़ सके.

R8, ProGuard, और DexGuard का इस्तेमाल करते समय ज़रूरी कॉन्फ़िगरेशन

Crashlytics, ProGuard के साथ काम करने वाली किसी भी मैपिंग फ़ाइल की मदद से, कोड को आसान बना सकता है. साथ ही, ProGuard, R8, और DexGuard के साथ भी इसका परीक्षण किया गया है.

अगर आपका ऐप्लिकेशन, Android Gradle 4.2.0 और उसके बाद के वर्शन के साथ-साथ, कोड को समझने से रोकने की सुविधा चालू करके R8 का इस्तेमाल करता है, तो Crashlytics क्रैश की ऐसी रिपोर्ट जनरेट करेगा जिन्हें पढ़ा जा सकेगा. ध्यान दें कि Crashlytics Kotlin और R8, दोनों का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, हाल ही में बेहतर सहायता उपलब्ध कराई गई है. इसकी वजह से, समस्या के लेबल में कुछ अनचाहे बदलाव हो सकते हैं.

अगर आपका ऐप्लिकेशन ProGuard कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करता है, तो आपको उस जानकारी को सेव करना होगा जो Crashlytics को क्रैश रिपोर्ट पढ़ने के लिए ज़रूरी है. ऐसा करने के लिए, अपनी ProGuard या DexGuard कॉन्फ़िगरेशन फ़ाइल में ये लाइनें जोड़ें:

-keepattributes SourceFile,LineNumberTable        # Keep file names and line numbers.
-keep public class * extends java.lang.Exception  # Optional: Keep custom exceptions.

DexGuard से जुड़े सवालों या समस्याओं के लिए मदद पाने के लिए, सीधे Guardsquare की सहायता टीम से संपर्क करें. ProGuard से जुड़ी मदद पाने के लिए, किसी विशेषज्ञ से संपर्क करें. इसके लिए, Guardsquare के कम्यूनिटी फ़ोरम पर जाएं.

बदले गए बाइनरी वैरिएंट को बनाए रखना

Crashlytics Gradle प्लग इन को, obfuscation का इस्तेमाल करने वाले वैरिएंट के लिए मैपिंग फ़ाइल अपलोड करने से रोकने के लिए, अपनी मॉड्यूल (ऐप्लिकेशन-लेवल) Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, firebaseCrashlytics.mappingFileUploadEnabled Gradle एक्सटेंशन प्रॉपर्टी को false पर सेट करें. इससे, obfuscation वाले बिल्ड के लिए बिल्ड होने में लगने वाले समय को कम करने में मदद मिल सकती है. हालांकि, ध्यान दें कि इससे Firebase कंसोल के Crashlytics पेज में, स्टैक ट्रेस obfuscation के तौर पर दिखेंगे.

Kotlin

import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension

// ...

android {

// To enable Crashlytics mapping file upload for specific build types:
buildTypes {
  getByName("debug") {
    minifyEnabled = true
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = false
    }
  }
}

...

// To enable Crashlytics mapping file upload for specific product flavors:
flavorDimensions += "environment"
productFlavors {
  create("staging") {
    dimension = "environment"
    ...
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = false
    }
  }
  create("prod") {
    dimension = "environment"
    ...
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = true
    }
  }
}
}

Groovy

android {

// To enable Crashlytics mapping file upload for specific build types:
buildTypes {
  debug {
    minifyEnabled true
    firebaseCrashlytics {
      mappingFileUploadEnabled false
    }
  }
}

...

// To enable Crashlytics mapping file upload for specific product flavors:
flavorDimensions "environment"
productFlavors {
  staging {
    dimension "environment"
    ...
    firebaseCrashlytics {
      mappingFileUploadEnabled false
    }
  }
  prod {
    dimension "environment"
    ...
    firebaseCrashlytics {
      mappingFileUploadEnabled true
    }
  }
}
}