دریافت گزارش‌های خرابی خوانا در داشبورد Crashlytics (اندروید)

انتخاب پلاتفرم: iOS+‎ Android Flutter Unity


افزایه Crashlytics Gradle می‌تواند به‌طور خودکار تشخیص دهد که چه زمانی کدتان را مبهم‌سازی می‌کنید. وقتی ساخت شما فایل نگاشت تولید می‌کند، افزایه آن را بارگذاری می‌کند تا سرورهای Crashlytics بتوانند از این فایل برای تبدیل ردیابی پشته برنامه شما به کد غیرمبهم و قابل‌خواندن برای انسان استفاده کنند.

پیکربندی الزامی هنگام استفاده از R8،‏ ProGuard، و DexGuard

‫Crashlytics می‌تواند با هر فایل نقشه سازگار با ProGuard مبهم‌سازی را لغو کند، و علاوه‌براین با ProGuard،‏ R8، و DexGuard آزمایش شده است.

اگر برنامه شما از R8 با فعال بودن مبهم‌سازی همراه با Android Gradle 4.2.0+‎ استفاده می‌کند، 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 برای گونه‌هایی که از مبهم‌سازی استفاده می‌کنند، دارایی افزایه firebaseCrashlytics.mappingFileUploadEnabled Gradle را در فایل Gradle واحد (سطح برنامه) (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle) روی false تنظیم کنید. این کار می‌تواند به تسریع زمان ساخت برای ساخت‌های مبهم‌سازی‌شده کمک کند، اما توجه داشته باشید که ردیابی پشته‌های حاصل در صفحه Crashlytics کنسول Firebase مبهم‌سازی‌شده نشان داده خواهد شد.

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