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