קבלת דוחות קריסה קריאים בלוח הבקרה של Crashlytics‏ (Flutter)

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


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

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

פלטפורמות של אפל

בדיקת ההגדרות להעלאת קובצי dSYM

כשמוסיפים את הפלאגין של Crashlytics ל-Flutter ומריצים את הפקודה flutterfire configure, המערכת מנסה להוסיף סקריפט הרצה לסביבת העבודה של Xcode בפרויקט. הסקריפט הזה מוצא את קובצי הסמלים של dSYM שנדרשים ומעלה אותם אל Crashlytics. בלי הקבצים האלה, תוצג ההתראה "Missing dSYM" בלוח הבקרה של Crashlytics, והחריגות יישמרו בקצה העורפי עד להעלאת הקבצים החסרים.

אם נתקלתם בבעיה הזו, קודם כל ודאו שהתקנתם את הסקריפט להרצה:

  1. מאתרים ופותחים את קובץ סביבת העבודה של Xcode בספריית iOS של הפרויקט (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).

  2. בודקים אם סקריפט הרצה בשם [firebase_crashlytics] Crashlytics Upload Symbols נוסף לשלבי ה-Build של היעד Runner.

    עיינו בקטע הרלוונטי בהמשך, בהתאם למצב: סקריפט ההרצה לא קיים או סקריפט ההרצה קיים.

בודקים את הגדרת הגרסה של Flutter ושל Crashlytics (אם משתמשים בדגל --split-debug-info)

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

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

Android

בדיקת הגדרות התלות

הפקודה flutterfire configure מנסה להוסיף את יחסי התלות הנדרשים לקובצי ה-build של Gradle בפרויקט. בלי יחסי התלות האלה, דוחות הקריסה במסוף Firebase עלולים להיות מעורפלים אם הערפול מופעל.

מוודאים שהשורות הבאות מופיעות בקובץ build.gradle ברמת הפרויקט ובקובץ build.gradle ברמת האפליקציה:

  • בקובץ ה-build ברמת הפרויקט (android/build.gradle), בודקים אם השורה הבאה קיימת:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • בקובץ ה-build ברמת האפליקציה (android/app/build.gradle), בודקים אם השורה הבאה קיימת:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

מוודאים שאתם משתמשים ב-CLI כדי להעלות סמלים של Flutter (אם אתם משתמשים בדגל --split-debug-info)

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

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

מתיקיית השורש של פרויקט 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 כשיוצרים את האפליקציה

אם הבעיות נמשכות, אפשר לעיין במדריך הספציפי ל-Android בנושא פתרון בעיות בדוחות מעורפלים.