כברירת מחדל, 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
), צריך לוודא שההגדרות הבאות מוגדרות:
לוחצים על הכרטיסייה Build Phases (שלבי build) ומרחיבים את הקטע Run Script (הרצת סקריפט).
בקטע 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 הנכון לכל גרסה מפותחת:
פותחים את הפרויקט ב-Xcode ובוחרים את קובץ הפרויקט ב-Navigator של Xcode.
בוחרים את היעד הראשי של ה-build.
פותחים את הכרטיסייה Build Settings של היעד ולוחצים על All.
חיפוש של
debug information format
.מגדירים את Debug Information Format ל-DWARF with dSYM File לכל סוגי ה-build.
מפתחים מחדש את האפליקציה.
דוחות הקריסה אמורים להופיע עכשיו במרכז הבקרה 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
בדיסק:
ב-Xcode, פותחים את החלון Organizer ובוחרים את האפליקציה מהרשימה. ב-Xcode תוצג רשימה של הארכיונים של הפרויקט.
לוחצים על ארכיון עם לחצן ה-Control כדי להציג אותו ב-Finder. לוחצים שוב עליה עם לחצן ה-Ctrl ואז על Show Package Contents.
בתוך
.xcarchive
יש ספרייה של קובצי dSYM שמכילה קובצי 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
.