קבלת דוחות קריסה קריאים במרכז הבקרה של Crashlytics


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

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

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

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

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

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

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

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

    עיינו בקטע הרלוונטי בהמשך כדי לבדוק אם סקריפט ההפעלה לא קיים או אם סקריפט ההפעלה קיים.

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

  1. מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. יש שני מקומות שונים שבהם אפשר למצוא את המזהה הזה:

    • במסוף Firebase, עוברים אל > Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על האפליקציה שלכם ל-Firebase ל-Apple כדי להציג את פרטי האפליקציה, כולל מזהה האפליקציה.

    • בספרייה ברמה העליונה של פרויקט Flutter, מחפשים את הקובץ firebase_options.dart. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתווית GOOGLE_APP_ID.

  2. לוחצים על > New Run Script Phase.

    חשוב לוודא שהשלב החדש הרצת סקריפט הוא שלב ה-build האחרון של הפרויקט. אחרת, Crashlytics לא יוכל לעבד קובצי dSYM כראוי.

  3. מרחיבים את הקטע החדש הרצת סקריפט.

  4. בשדה הסקריפט (שנמצא מתחת לתווית Shell), מוסיפים את סקריפט ההפעלה הבא.

    הסקריפטים האלה מעבדים את קובצי ה-dSYM ומעלים את הקבצים אל Crashlytics.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Apple (לא מזהה החבילה שלכם ב-Apple)
      דוגמה למזהה האפליקציה שלכם ב-Firebase ל-Apple: 1:1234567890:ios:321abc456def7890

    יש שתי דרכים למצוא את מזהה האפליקציה ב-Firebase:

    • בקובץ GoogleService-Info.plist, מזהה האפליקציה הוא הערך GOOGLE_APP_ID.

    • במסוף Firebase, עוברים אל Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על אפליקציית Firebase הרצויה כדי למצוא את מזהה האפליקציה שלה.

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

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

    Xcode מחפש את קובצי הקלט האלה במיקומים שצוינו כדי לוודא שקובצי ה-build זמינים לסקריפט ההפעלה. בנוסף, אם ההגדרה User Script Sandboxing מופעלת, Xcode מאפשר לסקריפט ההפעלה לגשת רק לקבצים שצוינו בInput Files.

    • כדי לאפשר ל-Crashlytics לעבד קובצי dSYM, צריך לציין את המיקום של קובצי ה-dSYM בפרויקט.
    • אם תספקו את המיקום של קובץ GoogleService-Info.plist המאוחזר של האפליקציה, Crashlytics יוכל לשייך את קובצי ה-dSYM לאפליקציה ב-Firebase.
    • הצגת המיקום של קובץ ההפעלה של האפליקציה מאפשרת ל-run script למנוע העלאות כפולות של אותו קובץ dSYM. חשוב לזכור שלא מעלים קובצי בינארי של אפליקציות.

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

  1. מאתרים את מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple. יש שני מקומות שונים שבהם אפשר למצוא את המזהה הזה:

    • במסוף Firebase, עוברים אל > Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על האפליקציה שלכם ל-Firebase ל-Apple כדי להציג את פרטי האפליקציה, כולל מזהה האפליקציה.

    • בספרייה ברמה העליונה של פרויקט Flutter, מחפשים את הקובץ firebase_options.dart. מזהה האפליקציה ב-Firebase של האפליקציה ל-Apple מסומן בתווית GOOGLE_APP_ID.

  2. כשמריצים את הסקריפט upload-symbols, משתמשים ב--ai FIREBASE_APPLE_APP_ID במקום ב--gsp /path/to/GoogleService-Info.plist.

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

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

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

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

משתמשים ב-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

    יש שתי דרכים למצוא את מזהה האפליקציה ב-Firebase:

    • בקובץ google-services.json, מזהה האפליקציה הוא הערך mobilesdk_app_id.

    • במסוף Firebase, עוברים אל Project settings. גוללים למטה אל הכרטיס האפליקציות שלך ולוחצים על אפליקציית Firebase הרצויה כדי למצוא את מזהה האפליקציה שלה.

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

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