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