איך מתחילים להשתמש ב-Crashlytics ל-Flutter

בחירת פלטפורמה: iOS+‎ Android Android NDK Flutter Unity


במדריך הזה מוסבר איך להתחיל להשתמש ב-Firebase Crashlytics באפליקציה שנוצרה ב-Flutter.

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

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

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

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

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

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

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

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

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

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

כדי לתעד באופן אוטומטי את כל השגיאות שמופיעות ב-framework של 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. במסוף Firebase, נכנסים לדף DevOps & Engagement (DevOps ומעורבות) > לוח הבקרה של Crashlytics כדי לבדוק את דוח הקריסה לבדיקה.

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


זה הכול! עכשיו Crashlytics עוקב אחרי קריסות באפליקציה, וב-Android גם אחרי שגיאות לא קריטיות ומקרי ANR. בלוח הבקרה של Crashlytics אפשר לראות את כל הדוחות והנתונים הסטטיסטיים ולחקור אותם.

השלבים הבאים