به طور پیشفرض، Firebase Crashlytics به طور خودکار پروژه Flutter شما را برای آپلود فایلهای نماد لازم، که تضمین میکند گزارشهای خرابی از حالت مبهم خارج شده و قابل خواندن توسط انسان هستند، مجهز میکند.
متأسفانه، مواردی وجود دارد که میتواند منجر به عدم پیکربندی کامل پروژه شود. این راهنما شرح میدهد که اتوماسیون چه کاری انجام میدهد و اولین گامها را برای اشکالزدایی راهاندازی پروژه شما ارائه میدهد.
پلتفرمهای اپل
پیکربندی خود را برای آپلود فایلهای dSYM بررسی کنید
افزودن افزونه Crashlytics Flutter و اجرای دستور flutterfire configure تلاش میکند تا یک اسکریپت اجرا به فضای کاری Xcode پروژه شما اضافه کند که فایلهای نماد dSYM لازم را پیدا کرده و در Crashlytics آپلود میکند. بدون این فایلها، هشدار "Missing dSYM" را در داشبورد Crashlytics مشاهده خواهید کرد و استثنائات تا زمان آپلود فایلهای از دست رفته توسط backend نگه داشته میشوند.
اگر با این مشکل مواجه شدید، ابتدا مطمئن شوید که اسکریپت run را نصب کردهاید:
فایل فضای کاری Xcode را در دایرکتوری iOS پروژه خود (
FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace) پیدا کرده و باز کنید.مشخص کنید که آیا اسکریپت اجرایی با عنوان
[firebase_crashlytics] Crashlytics Upload Symbolsبه فازهای ساخت هدف Runner اضافه شده است یا خیر.برای اطلاع از اینکه آیا اسکریپت اجرا وجود دارد یا خیر ، به بخش مربوطه در زیر مراجعه کنید.
اگر این اسکریپت اجرا وجود ندارد ، میتوانید آن را به صورت دستی اضافه کنید:
شناسه برنامه Firebase را برای برنامه Apple خود پیدا کنید. در اینجا دو مکان مختلف وجود دارد که میتوانید این شناسه را پیدا کنید:
در کنسول Firebase ، به مسیر زیر بروید:
> تنظیمات پروژه . به پایین اسکرول کنید تا به کارت «برنامههای شما» برسید، سپس روی برنامه Firebase Apple خود کلیک کنید تا اطلاعات برنامه، از جمله شناسه برنامه آن را مشاهده کنید. در دایرکتوری سطح بالای پروژه فلاتر خود، فایل
firebase_options.dartرا پیدا کنید. شناسه برنامه Firebase برای برنامه اپل شما با نامappIdمشخص شده است.
روی > مرحله اجرای اسکریپت جدید کلیک کنید.
مطمئن شوید که این مرحلهی جدید اجرای اسکریپت، آخرین مرحلهی ساخت پروژهی شما باشد. در غیر این صورت، Crashlytics نمیتواند dSYMها را به درستی پردازش کند.
بخش جدید Run Script را باز کنید.
در فیلد اسکریپت (واقع در زیر برچسب 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 : شناسه برنامه اپل فایربیس شما (نه شناسه بسته اپل شما)
مثال شناسه برنامه اپل فایربیس:1:1234567890:ios:321abc456def7890
در اینجا دو روش برای یافتن شناسه برنامه Firebase شما وجود دارد:
در فایل
GoogleService-Info.plistشما، شناسه برنامه شما مقدارGOOGLE_APP_IDاست؛ یادر کنسول Firebase ، به تنظیمات پروژه خود بروید. به پایین اسکرول کنید تا به کارت «برنامههای شما» برسید، سپس روی برنامه فایربیس مورد نظر کلیک کنید تا شناسه برنامه آن را پیدا کنید.
- FIREBASE_APP_ID : شناسه برنامه اپل فایربیس شما (نه شناسه بسته اپل شما)
در بخش فایلهای ورودی ، مسیرهای مربوط به مکان فایلهای زیر را اضافه کنید:
${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)
اگر اسکریپت اجرا وجود دارد، برای عیبیابی مشکلات dSYM به راهنمای مخصوص اپل مراجعه کنید. اگر تصمیم دارید فایلهای dSYM خود را از طریق فرآیند شرح داده شده آپلود کنید، باید مراحل اضافی زیر را انجام دهید:
شناسه برنامه Firebase را برای برنامه Apple خود پیدا کنید. در اینجا دو مکان مختلف وجود دارد که میتوانید این شناسه را پیدا کنید:
در کنسول Firebase ، به مسیر زیر بروید:
> تنظیمات پروژه . به پایین اسکرول کنید تا به کارت «برنامههای شما» برسید، سپس روی برنامه Firebase Apple خود کلیک کنید تا اطلاعات برنامه، از جمله شناسه برنامه آن را مشاهده کنید. در دایرکتوری سطح بالای پروژه فلاتر خود، فایل
firebase_options.dartرا پیدا کنید. شناسه برنامه Firebase برای برنامه اپل شما با نامappIdمشخص شده است.
هنگام اجرای اسکریپت
upload-symbols، به جای استفاده کنید.-ai FIREBASE_APPLE_APP_ID-gsp /path/to/GoogleService-Info.plist. (فایل gsp/path/to/GoogleService-Info.plist)
پیکربندی نسخه Flutter و Crashlytics خود را بررسی کنید (در صورت استفاده از پرچم --split-debug-info )
اگر پروژه فلاتر شما از پرچم --split-debug-info (و به صورت اختیاری، همچنین پرچم --obfuscate ) استفاده میکند، مراحل اضافی برای نمایش ردیابیهای پشته قابل خواندن برای برنامه شما لازم است.
مطمئن شوید که پروژه شما از پیکربندی نسخه پیشنهادی (Flutter 3.12.0+ و افزونه Crashlytics Flutter 3.3.4+) استفاده میکند تا پروژه شما بتواند به طور خودکار نمادهای Flutter (فایلهای dSYM) را تولید و در Crashlytics آپلود کند.
اندروید
پیکربندی وابستگی خود را بررسی کنید
دستور flutterfire configure تلاش میکند تا وابستگیهای لازم را به فایلهای Gradle build پروژه شما اضافه کند. بدون این وابستگیها، در صورت فعال بودن obfuscation، گزارشهای خرابی در کنسول 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) برای آپلود نمادهای فلاتر استفاده میکنید (در صورت استفاده از پرچم --split-debug-info )
اگر پروژه فلاتر شما از پرچم --split-debug-info (و به صورت اختیاری، همچنین پرچم --obfuscate ) استفاده میکند، مراحل اضافی برای نمایش ردیابیهای پشته قابل خواندن برای برنامه شما لازم است.
از رابط خط Firebase (نسخه ۱۱.۹.۰+) برای آپلود نمادهای اشکالزدایی فلاتر استفاده کنید. قبل از گزارش خرابی ناشی از ساخت کد مبهمسازی شده، باید نمادهای اشکالزدایی را آپلود کنید.
از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را اجرا کنید:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : شناسه برنامه اندروید Firebase شما (نه نام بسته شما)
مثالی از شناسه برنامه اندروید فایربیس:1:567383003300:android:17104a2ced0c9b9bدر اینجا دو روش برای یافتن شناسه برنامه Firebase شما وجود دارد:
در فایل
google-services.jsonشما، شناسه برنامه شما مقدارmobilesdk_app_idاست؛ یادر کنسول Firebase ، به تنظیمات پروژه خود بروید. به پایین اسکرول کنید تا به کارت «برنامههای شما» برسید، سپس روی برنامه فایربیس مورد نظر کلیک کنید تا شناسه برنامه آن را پیدا کنید.
PATH/TO /symbols: همان دایرکتوری که هنگام ساخت برنامه به فلگ--split-debug-infoارسال میکنید.
اگر مشکلات همچنان ادامه داشت، برای عیبیابی گزارشهای مبهم به راهنمای مخصوص اندروید مراجعه کنید.