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


به طور پیش فرض ، Firebase Crashlytics به طور خودکار پرونده های نماد اشکال زدایی شما (DSYM) را پردازش می کند تا گزارش های خرابی deobfaccated و قابل خواندن را به شما ارائه دهد. شما معمولاً این رفتار را در حین تنظیم اولیه Crashlytics در برنامه خود پیکربندی می کنید ، به طور خاص با اضافه کردن یک اسکریپت اجرا که به طور خودکار پرونده های DSYM را در مرحله ساخت برنامه خود بارگذاری می کند.

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

مطمئن شوید که Xcode می تواند به طور خودکار dSYM ها را پردازش کرده و فایل ها را آپلود کند

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

اطمینان حاصل کنید که پیکربندی شما برای اسکریپت Run 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. فرمت اطلاعات اشکال زدایی را با فایل 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 بازگرداند ، می توانید در فهرست Products که در Derived Data زندگی می کند .app نگاه کنید. اگر برنامه شما برای تولید منتشر شد، می‌توانید 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 : برای بارگذاری یک فایل ZIP حاوی پرونده های DSYM خود از گزینه "کشیدن و رها کردن" استفاده کنید (به Tab 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 اجرا کنید.