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

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


به‌طور پیش‌فرض، Firebase Crashlytics به‌طور خودکار پروژه Flutter شما را ابزاربندی می‌کند تا فایل‌های نماد لازم را بارگذاری کند و مطمئن شود گزارش‌های خرابی ابهام‌زدایی شده و قابل‌خواندن برای انسان هستند.

متأسفانه مواردی وجود دارد که می‌تواند منجر به پیکربندی نشدن کامل پروژه شود. این راهنما توضیح می‌دهد که خودکارسازی چه کاری انجام می‌دهد و اولین مراحل اشکال‌زدایی راه‌اندازی پروژه را ارائه می‌دهد.

پلاتفرم‌های Apple

پیکربندی‌تان را برای بارگذاری فایل‌های dSYM بررسی کنید

با افزودن افزایه Flutter Crashlytics و اجرای فرمان flutterfire configure، تلاش می‌شود تا یک اسکریپت اجرا به فضای کاری Xcode پروژه شما اضافه شود که فایل‌های نماد dSYM لازم را پیدا و در Crashlytics بارگذاری می‌کند. بدون این فایل‌ها، هشدار «dSYM موجود نیست» را در داشبورد Crashlytics خواهید دید و استثناها تا زمانی که فایل‌های موجود نیست بارگذاری شوند، توسط پس‌زمینه نگهداری خواهند شد.

اگر این مشکل را دارید، ابتدا مطمئن شوید که اسکریپت اجرا را نصب کرده‌اید:

  1. فایل فضای کاری Xcode را در فهرست راهنمای iOS پروژه (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) پیدا و باز کنید.

  2. بررسی کنید که آیا اسکریپت اجرایی با عنوان [firebase_crashlytics] Crashlytics Upload Symbols به «مراحل ساخت» هدف Runner اضافه شده است یا نه.

    برای اینکه ببینید آیا اسکریپت اجرا وجود ندارد یا اسکریپت اجرا وجود دارد، بخش مربوطه را در زیر ببینید.

پیکربندی نسخه را برای Flutter و Crashlytics (درصورت استفاده از پرچم --split-debug-info) بررسی کنید

اگر پروژه Flutter شما از پرچم --split-debug-info (و به‌صورت اختیاری، پرچم --obfuscate نیز) استفاده می‌کند، مراحل بیشتری برای نمایش رد پشته‌های خوانا برای برنامه‌تان لازم است.

مطمئن شوید که پروژه‌تان از پیکربندی نسخه توصیه‌شده استفاده می‌کند (Flutter نسخه ۳.۱۲.۰ به بالا و افزونه Flutter Crashlytics نسخه ۳.۳.۴ به بالا) تا پروژه‌تان بتواند به‌طور خودکار نمادهای Flutter (فایل‌های dSYM) را تولید و در Crashlytics بارگذاری کند.

Android

پیکربندی وابستگی را بررسی کنید

فرمان flutterfire configure تلاش می‌کند وابستگی‌های لازم را به فایل‌های ساخت Gradle پروژه‌تان اضافه کند. بدون این وابستگی‌ها، اگر مبهم‌سازی روشن باشد، گزارش‌های خرابی در کنسول Firebase ممکن است درنهایت مبهم‌سازی شوند.

مطمئن شوید خطوط زیر در سطح پروژه build.gradle و در سطح برنامه build.gradle وجود داشته باشد:

  • در فایل ساخت سطح پروژه (android/build.gradle)، خط زیر را بررسی کنید:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • در فایل ساخت سطح برنامه (android/app/build.gradle)، خط زیر را بررسی کنید:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

بررسی کنید که از CLI برای بارگذاری نمادهای Flutter استفاده می‌کنید (اگر از پرچم --split-debug-info استفاده می‌کنید)

اگر پروژه Flutter شما از پرچم --split-debug-info (و به‌صورت اختیاری، پرچم --obfuscate نیز) استفاده می‌کند، مراحل بیشتری برای نمایش رد پشته‌های خوانا برای برنامه‌تان لازم است.

از Firebase CLI (نسخه ۱۱.۹.۰+) برای بارگذاری نمادهای اشکال‌زدایی Flutter استفاده کنید. باید نمادهای اشکال‌زدایی را قبل‌از گزارش خرابی از ساخت کد مبهم بارگذاری کنید.

از دایرکتوری ریشه پروژه Flutter، فرمان زیر را اجرا کنید:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID: شناسه برنامه Android در Firebase (نه نام بسته شما)
    نمونه شناسه برنامه Android در Firebase: 1:567383003300:android:17104a2ced0c9b9b

  • ‫PATH/TO/symbols: همان دایرکتوری‌ای که هنگام ساختن برنامه به پرچم --split-debug-info ارسال می‌کنید

اگر مشکل برطرف نشد، به راهنمای مختص Android برای عیب‌یابی گزارش‌های مبهم مراجعه کنید.