| انتخاب پلاتفرم: | iOS+ Android Android NDK Flutter Unity |
این راهنما نحوه شروع کار با Firebase Crashlytics در برنامه Flutter شما را توضیح میدهد.
پساز راهاندازی افزایه Crashlytics Flutter در برنامهتان، میتوانید گزارشهای خرابی جامع را در کنسول Firebase دریافت کنید.
راهاندازی Crashlytics شامل استفاده از ابزار خط فرمان و IDE شما میشود. برای تکمیل راهاندازی، باید استثنای آزمایشی را مجبور کنید تا برای ارسال اولین گزارش خرابی به Firebase، پرتاب شود.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را در پروژه Flutter خود پیکربندی و مقداردهی اولیه کنید.
توصیه میشود: برای دریافت خودکار گزارشهای ردپای خردهنان برای درک کنشهای کاربر که منجر به رویداد خرابی، غیرمهلک، یا ANR میشود، باید Google Analytics را در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase جدیدی ایجاد میکنید، Google Analytics را درطول گردش کار ایجاد پروژه فعال کنید.
اگر از پروژه Firebase موجودی استفاده میکنید که Google Analytics در آن فعال نیست، میتوانید آن را در صفحه
تنظیمات > ادغامها در کنسول Firebase فعال کنید.
توجه داشته باشید که گزارشهای ردیاب برای همه پلاتفرمهای Android و Apple پشتیبانیشده توسط Crashlytics دردسترس است (بهجز watchOS).
مرحله ۱: افزودن Crashlytics به پروژه Flutter
از ریشه پروژه Flutter خود، فرمان زیر را برای نصب افزایه Flutter برای Crashlytics اجرا کنید.
برای بهرهمندی از گزارشهای ردیابی، افزایه Flutter را نیز برای Google Analytics به برنامهتان اضافه کنید. مطمئن شوید که Google Analytics در پروژه Firebase شما فعال باشد.
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsاز فهرست راهنمای ریشه پروژه Flutter خود، فرمان زیر را اجرا کنید:
flutterfire configureاجرای این فرمان تضمین میکند که پیکربندی Firebase برنامه Flutter شما بهروز باشد و، برای Android، افزایه Gradle Crashlytics موردنیاز را به برنامهتان اضافه میکند.
پساز تکمیل، پروژه Flutter خود را بازسازی کنید:
flutter run(اختیاری) اگر پروژه Flutter شما از پرچم
--split-debug-info(و بهصورت اختیاری، از پرچم--obfuscate) استفاده میکند، برای نمایش ردیابی پشتهای خوانا برای برنامههایتان، مراحل تکمیلی لازم است.پلاتفرمهای Apple: مطمئن شوید که پروژهتان از پیکربندی نسخه توصیهشده (Flutter 3.12.0+ و Crashlytics افزایه Flutter 3.3.4+) استفاده میکند تا پروژهتان بتواند بهطور خودکار نمادهای Flutter (فایلهای dSYM) را در Crashlytics تولید و بارگذاری کند.
Android: از Firebase CLI (نسخه ۱۱.۹.۰ و بالاتر) برای بارگذاری نمادهای اشکالزدایی Flutter استفاده کنید. باید نمادهای اشکالزدایی را قبلاز گزارش خرابی از ساختار کد مبهمسازیشده بارگذاری کنید.
از فهرست راهنمای ریشه پروژه Flutter، دستور زیر را اجرا کنید:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: شناسه برنامه Android در Firebase شما (نه نام بسته شما)
مثال شناسه برنامه Android در Firebase:1:567383003300:android:17104a2ced0c9b9bPATH/TO/symbols: همان دایرکتوری که هنگام ساختن برنامه به پرچم--split-debug-infoارسال میکنید
مرحله ۲: پیکربندی مدیریتکنندههای خرابی
با ملغی کردن FlutterError.onError با FirebaseCrashlytics.instance.recordFlutterFatalError، میتوانید بهطور خودکار همه خطاهایی را که در چارچوب Flutter ایجاد میشوند دریافت کنید:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Pass all uncaught "fatal" errors from the framework to Crashlytics
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
runApp(MyApp());
}
برای شناسایی خطاهای ناهمزمان که توسط چارچوب Flutter مدیریت نمیشوند، از
PlatformDispatcher.instance.onError استفاده کنید:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
برای نمونههایی از نحوه مدیریت انواع دیگر خطاها، به سفارشیسازی گزارشهای خرابی مراجعه کنید.
مرحله ۳: برای تکمیل راهاندازی، خرابی آزمایشی اجباری ایجاد کنید
برای تکمیل راهاندازی Crashlytics و دیدن دادههای اولیه در داشبورد Crashlytics کنسول Firebase، باید استثنای آزمایشی را مجبور کنید پرتاب شود.
به برنامهتان کدی اضافه کنید که بتوانید از آن برای اجبار کردن استثنای آزمایشی برای پرتاب شدن استفاده کنید.
اگر کنترلکننده خطایی اضافه کردهاید که
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)را به سطح بالایZoneفرا میخواند، میتوانید از کد زیر برای افزودن دکمهای به برنامهتان استفاده کنید که با فشار دادن آن، استثنای آزمایشی ایجاد میشود:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),برنامهتان را بسازید و اجرا کنید.
برای ارسال اولین گزارش برنامهتان، استثنای آزمایشی را مجبور کنید که پرتاب شود:
برنامه را از دستگاه آزمایشی یا شبیهساز باز کنید.
در برنامهتان، دکمه استثنای آزمایشی را که بااستفاده از کد بالا اضافه کردهاید فشار دهید.
در کنسول Firebase، به DevOps و تعامل > Crashlytics داشبورد بروید تا گزارش خرابی آزمایشیتان را بررسی کنید.
اگر کنسول را بازآوری کردهاید و همچنان خرابی آزمایشی را پساز پنج دقیقه نمیبینید، گزارشگیری اشکالزدایی را فعال کنید تا ببینید آیا برنامه شما گزارش خرابی ارسال میکند یا نه.
و تمام! Crashlytics اکنون برنامه شما را برای خرابیها و، در Android، خطاهای غیرمهلک و خطاهای ANR پایش میکند. برای مشاهده و بررسی همه گزارشها و آمار خود، به Crashlytics داشبورد مراجعه کنید.
مراحل بعدی
با افزودن گزارشهای موافقت، گزارشهای گزارش، کلیدها، و ردیابی خطاهای غیرمهلک اضافی، راهاندازی گزارش خرابی را سفارشیسازی کنید
با Google Play ادغام کنید تا بتوانید گزارشهای خرابی برنامه Android خود را براساس Google Play دسته مستقیماً در داشبورد Crashlytics فیلتر کنید. این کار به شما امکان میدهد بهتر روی ساختهای خاصی در داشبوردتان تمرکز کنید.
مشاهده ردیابی پشته و آمار خرابی در کنار کد با پنجره اطلاعات آماری کیفیت برنامه در Android Studio (از Electric Eel 2022.1.1 دردسترس است).
دادههایتان را به BigQuery یا Cloud Logging صادر کنید تا از تجزیهوتحلیل و ویژگیهای پیشرفته، مثل پرسش از دادهها، ساختن داشبوردهای سفارشی، و تنظیم هشدارهای سفارشی بهرهمند شوید.