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


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

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

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

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

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

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

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

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

  5. מגדירים את Debug Information Format ל-DWARF with dSYM File לכל סוגי ה-build.

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

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

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

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

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

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

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

  2. לוחצים על ארכיון עם לחצן ה-Control כדי להציג אותו ב-Finder. לוחצים שוב עליה עם לחצן ה-Ctrl ואז על Show Package Contents.

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

העלאת קובצי ה-dSYM

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

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

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

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

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

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

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

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

      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.