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


כברירת מחדל, הסמל של ניפוי הבאגים מעבד באופן אוטומטי את הסמל של Firebase Crashlytics (dSYM) כדי לספק דוחות קריסה עם קוד מעורפל (deobfuscated) ודוחות קריסה קריאים לאנשים. בדרך כלל מגדירים את ההתנהגות הזו במהלך ההגדרה הראשונית של 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 הנכון לכל build:

  1. פותחים את הפרויקט ב-Xcode ובוחרים את קובץ הפרויקט ב-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 לא מחזירה תוצאות, אפשר לחפש ספריית Products שבה נמצא .app (כברירת מחדל, הערך Products הספרייה נמצאת ב-Derived Data). אם האפליקציה שלך מופצת לסביבת הייצור, אפשר גם לחפש את ה-dSYM שלו בספריית .xcarchive בדיסק:

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

  2. לוחצים לחיצה ימנית על ארכיון כדי להציג אותו ב-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.