Crashlytics Gradle প্লাগইন স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে যখন আপনি আপনার কোড অস্পষ্ট করেন। যখন আপনার বিল্ড একটি ম্যাপিং ফাইল তৈরি করে, তখন প্লাগইন এটি আপলোড করে যাতে Crashlytics সার্ভারগুলি ফাইলটি ব্যবহার করে আপনার অ্যাপের স্ট্যাক ট্রেসগুলিকে অস্পষ্ট এবং মানব-পাঠযোগ্য কোড হিসাবে রেন্ডার করতে পারে।
R8, ProGuard, এবং DexGuard ব্যবহার করার সময় প্রয়োজনীয় কনফিগারেশন
Crashlytics যেকোন ProGuard-সামঞ্জস্যপূর্ণ ম্যাপিং ফাইলের সাথে deobfuscate করতে পারে, এবং উপরন্তু ProGuard, R8, এবং DexGuard এর সাথে পরীক্ষা করা হয়েছে।
যদি আপনার অ্যাপটি Android Gradle 4.2.0+ এর সাথে অস্পষ্টতার সাথে R8 ব্যবহার করে, Crashlytics পাঠযোগ্য ক্র্যাশ রিপোর্ট তৈরি করবে। উল্লেখ্য যে Crashlytics সম্প্রতি কোটলিন এবং 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 সম্পর্কিত প্রশ্ন বা সমস্যার জন্য সাহায্য পেতে, সরাসরি গার্ডস্কয়ার সহায়তা দলের সাথে যোগাযোগ করুন। ProGuard-এর সাহায্যের জন্য, একজন বিশেষজ্ঞের কাছ থেকে সহায়তা পেতে Guardsquare কমিউনিটি ফোরামে যান।
অস্পষ্ট বিল্ড বৈকল্পিক রাখুন
অস্পষ্টতা ব্যবহার করে এমন ভেরিয়েন্টের জন্য ম্যাপিং ফাইল আপলোড করা থেকে Crashlytics গ্রেডল প্লাগইনকে আটকাতে, আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts
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 } } } }