Crashlytics डैशबोर्ड (Android) में, पढ़ने लायक क्रैश रिपोर्ट पाना

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


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

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
    }
  }
}
}