دریافت گزارش‌های خرابی خوانا در داشبورد 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. روی برگه Build Phases کلیک کنید، سپس بخش Run Script را ازهم باز کنید.

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

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

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

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

بارگذاری dSYM

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

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

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

فایل‌های dSYM را به‌صورت دستی بارگذاری کنید

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

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

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