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