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