תחילת העבודה עם Firebase Crashlytics


במדריך למתחילים הזה מוסבר איך להגדיר את Firebase Crashlytics באפליקציה באמצעות הפלאגין Crashlytics Flutter, כדי לקבל דוחות מקיפים על קריסות במסוף Firebase.

כדי להגדיר את Crashlytics, צריך להשתמש גם בכלי שורת פקודה וגם בסביבת הפיתוח המשולבת (IDE). כדי לסיים את ההגדרה, צריך לגרום להפעלת חריגה לצורך בדיקה כדי לשלוח את דוח הקריסה הראשון ל-Firebase.

לפני שמתחילים

  1. אם עדיין לא עשיתם את זה, אתם צריכים להגדיר את Firebase ולהפעיל אותו בפרויקט Flutter.

  2. מומלץ: כדי לקבל באופן אוטומטי יומני נתיב ולהבין את פעולות המשתמש שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR, צריך להפעיל את האפשרות Google Analytics בפרויקט Firebase.

    • אם בפרויקט הקיים שלכם ב-Firebase לא הפעלתם את Google Analytics, תוכלו להפעיל את Google Analytics דרך הכרטיסייה Integrations (שילובים) בקטע > Project settings (הגדרות הפרויקט) במסוף Firebase.

    • אם אתם יוצרים פרויקט חדש ב-Firebase, זכרו להפעיל את Google Analytics לפני שתסיימו ליצור את הפרויקט.

    הערה: יומני נתיבי מיקום זמינים בכל הפלטפורמות של Android ו-Apple שתומכות ב-Crashlytics (חוץ מ-watchOS).

שלב 1: מוסיפים את Crashlytics לפרויקט Flutter

  1. מהרמה הבסיסית (root) של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את פלאגין Flutter ל-Crashlytics.

    כדי להפיק תועלת מיומני נתיב, צריך גם להוסיף לאפליקציה את הפלאגין Flutter ל-Google Analytics. חשוב לוודא שGoogle Analytics מופעל בפרויקט Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה:

    flutterfire configure
    

    הפעלת הפקודה הזו מבטיחה שההגדרה של Firebase באפליקציית Flutter תהיה עדכנית, וב-Android היא מוסיפה לאפליקציה את הפלאגין הנדרש Crashlytics Gradle.

  3. אחרי שמסיימים, בונים מחדש את פרויקט Flutter:

    flutter run
    
  4. (אופציונלי) אם פרויקט Flutter שלכם משתמש בדגל --split-debug-info (ואפשר גם בדגל --obfuscate), צריך לבצע שלבים נוספים כדי להציג עקבות מחסנית קריאה קריאות באפליקציות.

    • פלטפורמות של אפל: מוודאים שהפרויקט משתמש בהגדרת הגרסה המומלצת (Flutter 3.12.0 ומעלה ו-Crashlytics Flutter plugin 3.3.4 ומעלה), כדי שהפרויקט יוכל ליצור ולהעלות באופן אוטומטי סמלי Flutter (קבצי dSYM) אל Crashlytics.

    • Android: משתמשים ב-Firebase CLI (גרסה 11.9.0 ואילך) כדי להעלות סמלי ניפוי באגים של Flutter. צריך להעלות את סמלי ניפוי הבאגים לפני דיווח על קריסה מגרסת קוד מבולבלת.

      מריצים את הפקודה הבאה מתיקיית השורש של פרויקט Flutter:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: מזהה האפליקציה שלך ב-Firebase ל-Android (לא שם החבילה)
        דוגמה למזהה אפליקציה ב-Firebase ל-Android: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: אותה ספרייה שמעבירים לדגל --split-debug-info כשמבצעים build לאפליקציה

שלב 2: הגדרת crash handlers

אתם יכולים לזהות באופן אוטומטי את כל השגיאות שמוצגות במסגרת Flutter על ידי החלפת FlutterError.onError ב-FirebaseCrashlytics.instance.recordFlutterFatalError:

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 framework, משתמשים ב-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());

}

דוגמאות לאופן הטיפול בסוגים אחרים של שגיאות מופיעות במאמר בנושא התאמה אישית של דוחות קריסה.

שלב 3: הפעלת קריסה של בדיקה כדי לסיים את ההגדרה

כדי לסיים את ההגדרה של Crashlytics ולראות נתונים ראשוניים בלוח הבקרה של Firebase, צריך לגרום להפעלת חריגה של בדיקה.Crashlytics

  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 עכשיו מתבצע מעקב באפליקציה אחרי קריסות, וב-Android אחרי שגיאות לא קריטיות ומקרי ANR. בCrashlytics לוח הבקרה אפשר לראות את כל הדוחות והנתונים הסטטיסטיים ולבדוק אותם.

השלבים הבאים