گزارش‌های خرابی قابل خواندن را در داشبورد Crashlytics دریافت کنید


به‌طور پیش‌فرض، 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)

بررسی کنید آیا Xcode در حال تولید dSYM است یا خیر

اغلب اوقات، فایل‌های dSYM ناپدید می‌شوند زیرا Xcode آنها را تولید نمی‌کند. هنگامی که آپلود ناموفق است، Crashlytics یک هشدار "DSYM گم شده" را در کنسول Firebase نمایش می دهد. اگر این هشدار را دریافت کردید، ابتدا بررسی کنید که Xcode dSYM درستی را برای هر بیلد تولید می کند:

  1. پروژه خود را در Xcode باز کنید و سپس فایل پروژه را در Xcode Navigator انتخاب کنید.

  2. هدف ساخت اصلی خود را انتخاب کنید.

  3. برگه Build Settings را باز کنید و سپس روی All کلیک کنید.

  4. debug information format را جستجو کنید.

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

  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 کلیک کنید و سپس روی Show Package Contents کلیک کنید.

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

dSYM های خود را آپلود کنید

Crashlytics از روش‌های متعددی برای آپلود فایل‌های dSYMs شما به صورت خودکار یا دستی پشتیبانی می‌کند.

(توصیه می شود) dSYM های خود را به صورت خودکار پردازش کرده و فایل ها را آپلود کنید

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

فایل های dSYM خود را به صورت دستی آپلود کنید

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

  • گزینه 1 : از گزینه "Drag and Drop" مبتنی بر کنسول برای آپلود یک فایل فشرده حاوی فایل های dSYM خود استفاده کنید (به کنسول Firebase > Crashlytics > تب dSYMs بروید).

  • گزینه 2 : از اسکریپت upload-symbols استفاده کنید که می توانید از هر جایی در فرآیند ساخت خود تماس بگیرید تا فایل های dSYM خود را به صورت دستی آپلود کنید. برای اجرای اسکریپت upload-symbols ، از یکی از گزینه های زیر استفاده کنید:

    • گزینه A : خط زیر را در فرآیند ساخت خود بگنجانید:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • گزینه B : اسکریپت را مستقیماً از ترمینال خود اجرا کنید:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    برای یادداشت‌های استفاده و دستورالعمل‌های اضافی درباره این اسکریپت، upload-symbols با پارامتر --help اجرا کنید.