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


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

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

מוודאים ש-Xcode יכול לעבד באופן אוטומטי קובצי dSYM ולהעלות את הקבצים

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

חשוב לוודא שההגדרה של סקריפט ההרצה Crashlytics מעודכנת בהתאם לדרישות החדשות שהחלו עם Xcode 15. אם ההגדרה לא עדכנית, יכול להיות שתופיע השגיאה הבאה:
error: Info.plist Error Unable to process Info.plist at path ....

בפרט, ב-Xcode 15 ואילך נדרש לספק קבוצה מלאה יותר של מיקומי קבצים. כדי להריץ סקריפט של Crashlytics (firebase-ios-sdk/Crashlytics/run), צריך לוודא שההגדרה הבאה בוצעה:

  1. לוחצים על הכרטיסייה Build Phases (שלבי בנייה) ומרחיבים את הקטע Run Script (הפעלת סקריפט).

  2. בקטע 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)
    אם יש לכם ENABLE_USER_SCRIPT_SANDBOXING=YES ו-ENABLE_DEBUG_DYLIB=YES בהגדרות הבנייה של הפרויקט, צריך לכלול את השורות הבאות:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

בדיקה אם Xcode יוצר קובצי dSYM

ברוב המקרים, קבצי dSYM חסרים כי Xcode פשוט לא יוצר אותם. אם ההעלאה נכשלת, מוצגת ב-Crashlytics התראה 'חסר dSYM' במסוף Firebase. אם מופיעה ההתראה הזו, קודם צריך לבדוק ש-Xcode יוצר את קובץ ה-dSYM הנכון לכל בנייה:

  1. פותחים את הפרויקט ב-Xcode, ואז בוחרים את קובץ הפרויקט ב-Xcode Navigator.

  2. בוחרים את יעד הבנייה הראשי.

  3. פותחים את הכרטיסייה Build Settings (הגדרות בנייה) של היעד ולוחצים על All (הכול).

  4. חיפוש של debug information format.

  5. מגדירים את האפשרות Debug Information Format (פורמט מידע לניפוי באגים) לערך DWARF with dSYM File (DWARF עם קובץ dSYM) לכל סוגי ה-build.

  6. בונים מחדש את האפליקציה.

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

איתור קובצי ה-dSYM במחשב מקומי

מריצים את הפקודה הבאה כדי להציג את כל ה-UUID של קובצי ה-dSYM במחשב ולחפש את קובץ ה-dSYM החסר:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

אחרי שמאתרים את קובץ ה-dSYM, מעלים אותו ידנית אל Crashlytics. אם הפקודה mdfind לא מחזירה תוצאות, אפשר לחפש בספרייה Products שבה נמצא הקובץ .app (כברירת מחדל, הספרייה Products נמצאת ב-Derived Data). אם האפליקציה פורסמה בייצור, אפשר גם לחפש את קובץ ה-dSYM שלה בספרייה .xcarchive בדיסק:

  1. ב-Xcode, פותחים את החלון Organizer ובוחרים את האפליקציה מהרשימה. ב-Xcode מוצגת רשימה של ארכיונים של הפרויקט.

  2. לוחצים על Control ואז על ארכיון כדי להציג אותו ב-Finder. לוחצים שוב על המקש Control ועל החבילה, ואז לוחצים על הצגת תוכן החבילה.

  3. בתוך .xcarchive יש ספרייה של dSYM שמכילה dSYM שנוצרו כחלק מתהליך הארכיון של Xcode.

העלאת קובצי dSYM

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

(מומלץ) עיבוד אוטומטי של קובצי ה-dSYM והעלאה של הקבצים

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

העלאה ידנית של קובצי dSYM

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

  • אפשרות 1: משתמשים באפשרות 'גרירה ושחרור' במסוף כדי להעלות קובץ ZIP שמכיל את קובצי ה-dSYM (עוברים אל המסוף Firebase > Crashlytics > הכרטיסייה dSYMs).

  • אפשרות 2: אפשר להשתמש בסקריפט upload-symbols שאפשר להפעיל מכל מקום בתהליך הבנייה כדי להעלות ידנית את קובצי ה-dSYM. כדי להריץ את הסקריפט upload-symbols, משתמשים באחת מהאפשרויות הבאות:

    • אפשרות א': מוסיפים את השורה הבאה לתהליך הבנייה:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • אפשרות ב': מריצים את הסקריפט ישירות מהטרמינל:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

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