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


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

متأسفانه مواردی وجود دارد که می تواند منجر به پیکربندی کامل پروژه شود. این راهنما به تشریح کارهایی که اتوماسیون انجام می دهد و اولین گام ها برای اشکال زدایی راه اندازی پروژه شما را ارائه می دهد.

پلتفرم های اپل

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

با افزودن پلاگین Crashlytics Flutter و اجرای دستور flutterfire configure سعی می شود یک اسکریپت اجرا به فضای کاری Xcode پروژه شما اضافه شود که فایل های نماد dSYM لازم را پیدا کرده و در Crashlytics آپلود کند. بدون این فایل‌ها، هشدار «DSYM گمشده» را در داشبورد Crashlytics می‌بینید و تا زمانی که فایل‌های از دست رفته آپلود نشوند، استثناها توسط باطن نگهداری می‌شوند.

اگر این مشکل را دارید، ابتدا مطمئن شوید که اسکریپت اجرا را نصب کرده اید:

  1. فایل فضای کاری Xcode را در فهرست راهنمای iOS پروژه خود ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace ) پیدا کرده و باز کنید.

  2. مشخص کنید که آیا یک اسکریپت اجرا با عنوان [firebase_crashlytics] Crashlytics Upload Symbols به فازهای ساخت هدف Runner اضافه شده است یا خیر.

    برای اینکه آیا اسکریپت اجرا وجود ندارد یا اسکریپت اجرا وجود دارد به بخش مربوطه زیر مراجعه کنید.

اگر این اسکریپت اجرا وجود ندارد ، می توانید آن را به صورت دستی اضافه کنید:

  1. شناسه برنامه Firebase را برای برنامه Apple خود پیدا کنید. در اینجا دو مکان مختلف وجود دارد که می توانید این شناسه را پیدا کنید:

    • در کنسول Firebase ، به قسمت خود بروید > تنظیمات پروژه . به سمت پایین به کارت برنامه های شما بروید، سپس روی Firebase Apple App خود کلیک کنید تا اطلاعات برنامه، از جمله شناسه برنامه آن را مشاهده کنید.

    • در دایرکتوری سطح بالای پروژه Flutter خود، فایل firebase_options.dart خود را پیدا کنید. شناسه برنامه Firebase برای برنامه Apple شما با عنوان GOOGLE_APP_ID برچسب‌گذاری شده است.

  2. > مرحله اجرای جدید اسکریپت کلیک کنید.

    مطمئن شوید که این مرحله Run Script جدید آخرین مرحله ساخت پروژه شما است. در غیر این صورت، Crashlytics نمی تواند dSYM ها را به درستی پردازش کند.

  3. بخش Run Script جدید را باز کنید.

  4. در قسمت اسکریپت (که در زیر برچسب Shell قرار دارد)، اسکریپت های اجرا شده زیر را اضافه کنید.

    این اسکریپت ها فایل های dSYM شما را پردازش کرده و فایل ها را در Crashlytics آپلود می کنند.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID : Firebase Apple App ID شما (نه Apple bundle ID)
      مثال Firebase Apple ID: 1:1234567890:ios:321abc456def7890

    در اینجا دو روش برای یافتن شناسه برنامه Firebase وجود دارد:

    • در فایل GoogleService-Info.plist شما، شناسه برنامه شما مقدار GOOGLE_APP_ID است. یا

    • در کنسول Firebase ، به تنظیمات پروژه خود بروید. به سمت پایین به کارت برنامه های شما بروید، سپس روی برنامه Firebase مورد نظر کلیک کنید تا شناسه برنامه آن را پیدا کنید.

  5. در بخش Input Files ، مسیرهای مکان فایل های زیر را اضافه کنید:

    ${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 در مکان های مشخص شده برای این فایل های ورودی جستجو می کند تا مطمئن شود که فایل های ساخت برای اسکریپت اجرا در دسترس هستند. همچنین، اگر User Script Sandboxing فعال باشد، Xcode فقط به اسکریپت اجرا شده اجازه دسترسی به فایل‌های مشخص‌شده در فایل‌های ورودی را می‌دهد.

    • ارائه مکان فایل‌های dSYM پروژه شما، Crashlytics قادر می‌سازد تا dSYM‌ها را پردازش کند.
    • ارائه مکان فایل GoogleService-Info.plist ساخته شده برنامه شما Crashlytics قادر می سازد dSYM ها را با برنامه Firebase شما مرتبط کند.
    • ارائه مکان فایل اجرایی برنامه شما به اسکریپت اجرا اجازه می دهد تا از آپلودهای تکراری همان dSYM جلوگیری کند. توجه داشته باشید که باینری های برنامه آپلود نمی شوند.

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

  1. شناسه برنامه Firebase را برای برنامه Apple خود پیدا کنید. در اینجا دو مکان مختلف وجود دارد که می توانید این شناسه را پیدا کنید:

    • در کنسول Firebase ، به قسمت خود بروید > تنظیمات پروژه . به سمت پایین به کارت برنامه های شما بروید، سپس روی Firebase Apple App خود کلیک کنید تا اطلاعات برنامه، از جمله شناسه برنامه آن را مشاهده کنید.

    • در دایرکتوری سطح بالای پروژه Flutter خود، فایل firebase_options.dart خود را پیدا کنید. شناسه برنامه Firebase برای برنامه Apple شما با عنوان GOOGLE_APP_ID برچسب‌گذاری شده است.

  2. هنگام اجرای اسکریپت upload-symbols ، از -ai FIREBASE_APPLE_APP_ID به جای -gsp /path/to/GoogleService-Info.plist .

پیکربندی نسخه خود را برای Flutter و Crashlytics بررسی کنید (در صورت استفاده از پرچم --split-debug-info )

اگر پروژه Flutter شما از پرچم --split-debug-info (و به صورت اختیاری، همچنین پرچم --obfuscate ) استفاده می کند، مراحل بیشتری برای نمایش رد پشته های قابل خواندن برای برنامه شما لازم است.

مطمئن شوید که پروژه شما از پیکربندی نسخه توصیه شده (Flutter 3.12.0+ و Crashlytics Flutter 3.3.4+) استفاده می کند تا پروژه شما بتواند به طور خودکار نمادهای Flutter (فایل های dSYM) را در Crashlytics تولید و آپلود کند.

اندروید

پیکربندی وابستگی خود را بررسی کنید

دستور flutterfire configure تلاش می کند تا وابستگی های لازم را به فایل های ساخت Gradle پروژه شما اضافه کند. بدون این وابستگی‌ها، در صورت روشن شدن مبهم، گزارش‌های خرابی در کنسول Firebase ممکن است مبهم شوند.

مطمئن شوید که خطوط زیر در build.gradle در سطح پروژه و build.gradle سطح برنامه وجود دارد:

  • در فایل ساخت سطح پروژه ( android/build.gradle )، خط زیر را بررسی کنید:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • در فایل ساخت سطح برنامه ( android/app/build.gradle )، خط زیر را بررسی کنید:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

بررسی کنید که از CLI برای آپلود نمادهای Flutter استفاده می کنید (اگر از پرچم --split-debug-info استفاده می کنید)

اگر پروژه Flutter شما از پرچم --split-debug-info (و به صورت اختیاری، همچنین پرچم --obfuscate ) استفاده می کند، مراحل بیشتری برای نمایش رد پشته های قابل خواندن برای برنامه شما لازم است.

از Firebase CLI (v.11.9.0+) برای آپلود نمادهای اشکال زدایی Flutter استفاده کنید. قبل از گزارش خرابی از یک ساخت کد مبهم، باید نمادهای اشکال زدایی را آپلود کنید.

از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را اجرا کنید:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID : شناسه برنامه Android Firebase شما (نه نام بسته شما)
    ID برنامه اندروید Firebase مثال: 1:567383003300:android:17104a2ced0c9b9b

    در اینجا دو روش برای یافتن شناسه برنامه Firebase وجود دارد:

    • در فایل google-services.json ، شناسه برنامه شما مقدار mobilesdk_app_id است. یا

    • در کنسول Firebase ، به تنظیمات پروژه خود بروید. به سمت پایین به کارت برنامه های شما بروید، سپس روی برنامه Firebase مورد نظر کلیک کنید تا شناسه برنامه آن را پیدا کنید.

  • PATH/TO /symbols : همان دایرکتوری که هنگام ساخت برنامه به پرچم --split-debug-info ارسال می کنید.

اگر مشکلات همچنان ادامه داشت، برای عیب‌یابی گزارش‌های مبهم به راهنمای اختصاصی Android مراجعه کنید.