איך מתחילים להשתמש ב-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, אתם יכולים להפעיל אותו בדף Settings > Integrations במסוף 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: הגדרת הטיפול בקריסות

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

השלבים הבאים