گزارش‌های خرابی قابل خواندن را در داشبورد 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 نسخه ۱۵ و بالاتر مستلزم آن است که شما مجموعه کامل‌تری از مکان‌های فایل را ارائه دهید. برای اسکریپت اجرای 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 هشدار "Missing 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، کلید Ctrl را نگه دارید و روی آن کلیک کنید. دوباره کلید Ctrl را نگه دارید و سپس روی Show Package Contents کلیک کنید.

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

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

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

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

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

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

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

  • گزینه ۱ : از گزینه «کشیدن و رها کردن» مبتنی بر کنسول برای آپلود یک فایل زیپ حاوی فایل‌های dSYM خود استفاده کنید (به کنسول Firebase > 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 اجرا کنید.