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


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

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

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

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

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

    • אם Google Analytics לא מופעל בפרויקט הקיים ב-Firebase, תוכלו להפעיל אותו בכרטיסייה 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), צריך לבצע שלבים נוספים כדי להציג את מעקב ה-stack של האפליקציות בצורה קריא.

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

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

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

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

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

שלב 2: מגדירים גורמים מטפלים בקריסות

אפשר לזהות באופן אוטומטי את כל השגיאות שהופקו ב-Flutter framework על ידי ביטול של 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 ולראות נתונים ראשוניים בלוח הבקרה של Crashlytics במסוף Firebase, צריך לאלץ הטלת חריגת בדיקה.

  1. מוסיפים לאפליקציה קוד שבאמצעותו אפשר לאלץ חריגה מבדיקה שודר.

    אם הוספתם handler שגיאות שקורא 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 תוכלו לראות את כל הדוחות והנתונים הסטטיסטיים ולנתח אותם.

השלבים הבאים