این راهنمای سریع نحوه راهاندازی Firebase Crashlytics در برنامه شما با افزونه Crashlytics Flutter را شرح میدهد تا بتوانید گزارشهای جامعی از خرابیها را در کنسول Firebase دریافت کنید.
راهاندازی Crashlytics شامل استفاده از یک ابزار خط فرمان و IDE شما میشود. برای تکمیل راهاندازی، باید یک استثنای آزمایشی ایجاد کنید تا اولین گزارش خرابی شما به Firebase ارسال شود.
قبل از اینکه شروع کنی
اگر قبلاً این کار را نکردهاید، Firebase را در پروژه Flutter خود پیکربندی و مقداردهی اولیه کنید .
توصیه میشود : برای اینکه گزارشهای breadcrumb به طور خودکار اقدامات کاربر را که منجر به خرابی، عدم موفقیت یا رویداد ANR میشود، درک کنند، باید Google Analytics در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase فعلی شما Google Analytics فعال نکرده است، میتوانید Google Analytics از تب Integrations فعال کنید.
> تنظیمات پروژه در کنسول Firebase . اگر در حال ایجاد یک پروژه جدید Firebase هستید، در طول فرآیند ایجاد پروژه، Google Analytics فعال کنید.
توجه داشته باشید که گزارشهای breadcrumb برای همه پلتفرمهای اندروید و اپل که توسط Crashlytics پشتیبانی میشوند (به جز watchOS) در دسترس هستند.
مرحله ۱ : Crashlytics به پروژه Flutter خود اضافه کنید
از ریشه پروژه Flutter خود، دستور زیر را اجرا کنید تا افزونه Flutter برای Crashlytics نصب شود.
برای استفاده از گزارشهای breadcrumb ، افزونه Flutter برای Google Analytics را نیز به برنامه خود اضافه کنید. مطمئن شوید که Google Analytics در پروژه Firebase شما فعال است .
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsاز دایرکتوری ریشه پروژه Flutter خود، دستور زیر را اجرا کنید:
flutterfire configureاجرای این دستور تضمین میکند که پیکربندی Firebase برنامه Flutter شما بهروز است و برای اندروید، افزونه مورد نیاز Crashlytics Gradle را به برنامه شما اضافه میکند.
پس از اتمام، پروژه Flutter خود را از نو بسازید:
flutter run(اختیاری) اگر پروژه فلاتر شما از پرچم
--split-debug-info(و به صورت اختیاری، همچنین پرچم--obfuscate) استفاده میکند، مراحل اضافی برای نمایش ردیابیهای پشته قابل خواندن برای برنامههای شما لازم است.پلتفرمهای اپل: مطمئن شوید که پروژه شما از پیکربندی نسخه پیشنهادی (Flutter 3.12.0+ و افزونه Crashlytics Flutter 3.3.4+) استفاده میکند تا پروژه شما بتواند به طور خودکار نمادهای Flutter (فایلهای dSYM) را تولید و در Crashlytics آپلود کند.
اندروید: از رابط خط 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ارسال میکنید.
مرحله ۲ : پیکربندی کنترلکنندههای خرابی
شما میتوانید با بازنویسی 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"), ),برنامه خود را بسازید و اجرا کنید.
برای ارسال اولین گزارش برنامهتان، اجرای خطای تست را اجباری کنید:
برنامه خود را از دستگاه آزمایشی یا شبیهساز خود باز کنید.
در برنامه خود، دکمهی تست استثنا را که با استفاده از کد بالا اضافه کردهاید، فشار دهید.
برای مشاهدهی خرابی آزمایشی خود، به داشبورد Crashlytics در کنسول Firebase بروید.
اگر کنسول را رفرش کردهاید و هنوز بعد از پنج دقیقه خطای آزمایشی را مشاهده نمیکنید، گزارشگیری اشکالزدایی را فعال کنید تا ببینید آیا برنامه شما گزارشهای خرابی را ارسال میکند یا خیر.
و تمام! Crashlytics اکنون برنامه شما را برای خرابیها و در اندروید، خطاهای غیرمهلک و ANRها رصد میکند. برای مشاهده و بررسی تمام گزارشها و آمار خود، از داشبورد Crashlytics دیدن کنید.
مراحل بعدی
با افزودن گزارشهای اختیاری، گزارشهای لاگ، کلیدها و ردیابی خطاهای غیرمهلک اضافی ، تنظیمات گزارش خرابی خود را سفارشی کنید .
با Google Play ادغام شوید تا بتوانید گزارشهای خرابی برنامه اندروید خود را بر اساس مسیر Google Play مستقیماً در داشبورد Crashlytics فیلتر کنید. این به شما امکان میدهد داشبورد خود را بهتر روی نسخههای خاص متمرکز کنید.
با استفاده از پنجره App Quality Insights در اندروید استودیو (که از نسخه Electric Eel 2022.1.1 در دسترس است) ، میتوانید ردپاهای پشته و آمار خرابیها را در کنار کد خود مشاهده کنید .