دریافت گزارش‌های خرابی خوانا در داشبورد Crashlytics (پلاتفرم‌های Apple)

انتخاب پلاتفرم: iOS+‎ Android Flutter Unity


به‌طور پیش‌فرض، 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. روی برگه ساخت مراحل کلیک کنید، و سپس بخش اجرای دستورگان را ازهم باز کنید.

  2. در بخش فایل‌های ورودی، مطمئن شوید مسیرهای مکان‌های فایل‌های زیر را دارید:

    ${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. برگه تنظیمات ساخت هدف را باز کنید، و سپس روی همه کلیک کنید.

  4. جستجوی debug information format.

  5. برای همه انواع ساخت، قالب اطلاعات اشکال‌زدایی را روی DWARF با فایل dSYM تنظیم کنید.

  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، پنجره سازمان‌دهنده را باز کنید، و سپس برنامه خود را از فهرست انتخاب کنید. ‫Xcode فهرستی از بایگانی‌های پروژه شما را نمایش می‌دهد.

  2. برای مشاهده بایگانی در Finder، روی بایگانی کلیک کنید و دکمه کنترل را نگه دارید. دوباره روی آن کلیک کنید و سپس روی نمایش محتوای بسته کلیک کنید.

  3. در .xcarchive، دایرکتوری dSYMs وجود دارد که حاوی dSYMs تولیدشده به‌عنوان بخشی از فرایند بایگانی Xcode است.

بارگذاری dSYM

‫Crashlytics از روش‌های متعددی برای بارگذاری فایل‌های dSYMs پشتیبانی می‌کند، چه خودکار و چه دستی.

(توصیه‌شده) به‌طور خودکار dSYMهایتان را پردازش کنید و فایل‌ها را بارگذاری کنید

وقتی Crashlytics را در ابتدا راه‌اندازی می‌کنید، احتمالاً این رفتار بارگذاری خودکار را برای برنامه‌تان پیکربندی کرده‌اید. بااین‌حال، اگر بارگذاری‌های خودکار انجام نمی‌شود، بررسی کنید که پیکربندی‌تان درست باشد.

بارگذاری دستی فایل‌های dSYM

اگر بارگذاری‌های خودکار ناموفق است، می‌توانید فایل‌های dSYM خود را بااستفاده از یکی از گزینه‌های زیر به‌صورت دستی بارگذاری کنید.

  • گزینه ۱: از رابط «کشیدن و رها کردن» در کنسول Firebase برای بارگذاری فایل zip حاوی فایل‌های dSYM خود استفاده کنید (به DevOps و تعامل > Crashlytics داشبورد > برگه dSYM بروید).

  • گزینه ۲: از دستورگان 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 اجرا کنید.