با Firebase Crashlytics شروع کنید


این راهنمای سریع نحوه راه‌اندازی Firebase Crashlytics در برنامه شما با افزونه Crashlytics Flutter را شرح می‌دهد تا بتوانید گزارش‌های جامعی از خرابی‌ها را در کنسول Firebase دریافت کنید.

راه‌اندازی Crashlytics شامل استفاده از یک ابزار خط فرمان و IDE شما می‌شود. برای تکمیل راه‌اندازی، باید یک استثنای آزمایشی ایجاد کنید تا اولین گزارش خرابی شما به Firebase ارسال شود.

قبل از اینکه شروع کنی

  1. اگر قبلاً این کار را نکرده‌اید، Firebase را در پروژه Flutter خود پیکربندی و مقداردهی اولیه کنید .

  2. توصیه می‌شود : برای اینکه گزارش‌های breadcrumb به طور خودکار اقدامات کاربر را که منجر به خرابی، عدم موفقیت یا رویداد ANR می‌شود، درک کنند، باید Google Analytics در پروژه Firebase خود فعال کنید.

    • اگر پروژه Firebase فعلی شما Google Analytics فعال نکرده است، می‌توانید Google Analytics از تب Integrations فعال کنید. > تنظیمات پروژه در کنسول Firebase .

    • اگر در حال ایجاد یک پروژه جدید Firebase هستید، در طول فرآیند ایجاد پروژه، Google Analytics فعال کنید.

    توجه داشته باشید که گزارش‌های breadcrumb برای همه پلتفرم‌های اندروید و اپل که توسط Crashlytics پشتیبانی می‌شوند (به جز watchOS) در دسترس هستند.

مرحله ۱ : Crashlytics به پروژه Flutter خود اضافه کنید

  1. از ریشه پروژه Flutter خود، دستور زیر را اجرا کنید تا افزونه Flutter برای Crashlytics نصب شود.

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

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را اجرا کنید:

    flutterfire configure
    

    اجرای این دستور تضمین می‌کند که پیکربندی Firebase برنامه Flutter شما به‌روز است و برای اندروید، افزونه مورد نیاز Crashlytics Gradle را به برنامه شما اضافه می‌کند.

  3. پس از اتمام، پروژه Flutter خود را از نو بسازید:

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

    • پلتفرم‌های اپل: مطمئن شوید که پروژه شما از پیکربندی نسخه پیشنهادی (Flutter 3.12.0+ و افزونه Crashlytics Flutter 3.3.4+) استفاده می‌کند تا پروژه شما بتواند به طور خودکار نمادهای Flutter (فایل‌های dSYM) را تولید و در Crashlytics آپلود کند.

    • اندروید: از رابط خط Firebase (نسخه ۱۱.۹.۰+) برای آپلود نمادهای اشکال‌زدایی فلاتر استفاده کنید. قبل از گزارش خرابی ناشی از ساخت کد مبهم‌سازی شده، باید نمادهای اشکال‌زدایی را آپلود کنید.

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

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

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

مرحله ۲ : پیکربندی کنترل‌کننده‌های خرابی

شما می‌توانید با بازنویسی FlutterError.onError با FirebaseCrashlytics.instance.recordFlutterFatalError ، به طور خودکار تمام خطاهایی را که در چارچوب Flutter رخ می‌دهند، دریافت کنید:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

برای دریافت خطاهای ناهمزمان که توسط فریم‌ورک Flutter مدیریت نمی‌شوند، از PlatformDispatcher.instance.onError استفاده کنید:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

برای مثال‌هایی از نحوه مدیریت انواع دیگر خطاها، به سفارشی‌سازی گزارش‌های خرابی مراجعه کنید.

مرحله ۳ : برای اتمام راه‌اندازی، یک کرش آزمایشی را اعمال کنید

برای تکمیل راه‌اندازی Crashlytics و مشاهده داده‌های اولیه در داشبورد Crashlytics کنسول Firebase ، باید یک استثنای آزمایشی ایجاد کنید.

  1. کدی را به برنامه خود اضافه کنید که بتوانید از آن برای ایجاد یک استثنای آزمایشی استفاده کنید.

    اگر یک مدیریت‌کننده خطا اضافه کرده‌اید که FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) را به Zone سطح بالا فراخوانی می‌کند، می‌توانید از کد زیر برای اضافه کردن دکمه‌ای به برنامه خود استفاده کنید که هنگام فشردن، یک استثنای آزمایشی ایجاد می‌کند:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. برنامه خود را بسازید و اجرا کنید.

  3. برای ارسال اولین گزارش برنامه‌تان، اجرای خطای تست را اجباری کنید:

    1. برنامه خود را از دستگاه آزمایشی یا شبیه‌ساز خود باز کنید.

    2. در برنامه خود، دکمه‌ی تست استثنا را که با استفاده از کد بالا اضافه کرده‌اید، فشار دهید.

  4. برای مشاهده‌ی خرابی آزمایشی خود، به داشبورد Crashlytics در کنسول Firebase بروید.

    اگر کنسول را رفرش کرده‌اید و هنوز بعد از پنج دقیقه خطای آزمایشی را مشاهده نمی‌کنید، گزارش‌گیری اشکال‌زدایی را فعال کنید تا ببینید آیا برنامه شما گزارش‌های خرابی را ارسال می‌کند یا خیر.


و تمام! Crashlytics اکنون برنامه شما را برای خرابی‌ها و در اندروید، خطاهای غیرمهلک و ANRها رصد می‌کند. برای مشاهده و بررسی تمام گزارش‌ها و آمار خود، از داشبورد Crashlytics دیدن کنید.

مراحل بعدی