כברירת מחדל, 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
), צריך לוודא שההגדרות הבאות מוגדרות:
לוחצים על הכרטיסייה 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. לוחצים עליו שוב באמצעות מקש Control ואז לוחצים על Show Package Contents (הצגת תוכן החבילה).
בתוך
.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
.