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


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

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

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

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

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

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

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

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

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

  1. מהשורש של פרויקט 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: מזהה האפליקציה שלכם ב-Firebase ל-Android (לא שם החבילה)
        דוגמה למזהה האפליקציה שלכם ב-Firebase ל-Android: 1:567383003300:android:17104a2ced0c9b9b

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

שלב 2: מגדירים מנהלים של קריסות

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

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

השלבים הבאים