במדריך למתחילים הזה מוסבר איך להגדיר את Firebase Crashlytics באפליקציה באמצעות הפלאגין Crashlytics Flutter, כדי לקבל דוחות מקיפים על קריסות במסוף Firebase.
ההגדרה של Crashlytics כוללת שימוש בכלי שורת פקודה ובסביבת הפיתוח המשולבת (IDE). כדי לסיים את ההגדרה, צריך לגרום להפעלת חריגה (exception) של בדיקה כדי לשלוח את דוח הקריסה הראשון ל-Firebase.
לפני שמתחילים
אם עדיין לא עשיתם את זה, אתם צריכים להגדיר את Firebase ולהפעיל אותו בפרויקט Flutter.
מומלץ: כדי לקבל באופן אוטומטי יומני נתיב ולהבין את פעולות המשתמש שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR, צריך להפעיל את האפשרות Google Analytics בפרויקט Firebase.
אם בפרויקט הקיים שלכם ב-Firebase לא הפעלתם את Google Analytics, תוכלו להפעיל את Google Analytics דרך הכרטיסייה Integrations (שילובים) בקטע
(הגדרות הפרויקט) במסוף > Project settingsFirebase. אם אתם יוצרים פרויקט חדש ב-Firebase, זכרו להפעיל את Google Analytics לפני שתסיימו ליצור את הפרויקט.
חשוב לזכור שיומני נתיבי מיקום זמינים לכל הפלטפורמות של Android ו-Apple שנתמכות על ידי Crashlytics (למעט watchOS).
שלב 1: מוסיפים את Crashlytics לפרויקט Flutter
מהרמה הבסיסית (root) של פרויקט 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 היא מוסיפה לאפליקציה את הפלאגין הנדרש Crashlytics Gradle.
אחרי שמשלימים את התהליך, בונים מחדש את פרויקט Flutter:
flutter run
(אופציונלי) אם פרויקט Flutter שלכם משתמש בדגל
--split-debug-info
(ואפשר גם בדגל--obfuscate
), צריך לבצע שלבים נוספים כדי להציג עקבות מחסנית קריאה שניתן לקרוא באפליקציות.פלטפורמות של אפל: מוודאים שהפרויקט משתמש בהגדרת הגרסה המומלצת (Flutter 3.12.0 ומעלה ו-Crashlytics Flutter plugin 3.3.4 ומעלה), כדי שהפרויקט יוכל ליצור ולהעלות באופן אוטומטי סמלי Flutter (קבצי dSYM) אל Crashlytics.
Android: משתמשים ב-Firebase CLI (גרסה 11.9.0 ואילך) כדי להעלות סמלי ניפוי באגים של Flutter. צריך להעלות את סמלי ניפוי הבאגים לפני דיווח על קריסה מגרסת קוד מעורפל.
מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Android (לא שם החבילה)
דוגמה למזהה אפליקציה ב-Firebase ל-Android:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
: אותה ספרייה שמעבירים לדגל--split-debug-info
כשמבצעים build של האפליקציה
שלב 2: הגדרת מטפלים בקריסות
אפשר לזהות באופן אוטומטי את כל השגיאות שמוצגות במסגרת Flutter על ידי החלפת FlutterError.onError
ב-FirebaseCrashlytics.instance.recordFlutterFatalError
:
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 framework, משתמשים בפונקציה 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());
}
דוגמאות לטיפול בסוגים אחרים של שגיאות מופיעות במאמר בנושא התאמה אישית של דוחות קריסה.
שלב 3: הפעלת קריסה של בדיקה כדי לסיים את ההגדרה
כדי לסיים את ההגדרה של Crashlytics ולראות נתונים ראשוניים בלוח הבקרה של Crashlytics במסוף Firebase, צריך לגרום להפעלת חריגה של בדיקה.
מוסיפים לאפליקציה קוד שאפשר להשתמש בו כדי לכפות השלכה של חריג בדיקה.
אם הוספתם גורם שמטפל בשגיאות וקורא לפונקציה
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
ברמה העליונהZone
, אתם יכולים להשתמש בקוד הבא כדי להוסיף לחצן לאפליקציה. כשלוחצים על הלחצן, מוצג חריג של בדיקה:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
יוצרים ומריצים את האפליקציה.
כדי לשלוח את הדוח הראשון של האפליקציה, צריך לגרום לכך שחריגת הבדיקה תופעל:
פותחים את האפליקציה במכשיר הבדיקה או באמולטור.
באפליקציה, לוחצים על לחצן הבדיקה של החריגה שהוספתם באמצעות הקוד שלמעלה.
עוברים אל מרכז הבקרה של Crashlytics במסוף Firebase כדי לראות את קריסת הבדיקה.
אם רעננתם את המסוף והקראש של הבדיקה עדיין לא מופיע אחרי חמש דקות, צריך להפעיל את יומן ניפוי הבאגים כדי לבדוק אם האפליקציה שולחת דוחות קראש.
זהו, סיימתם. Crashlytics עכשיו מתבצע מעקב באפליקציה אחרי קריסות, וב-Android אחרי שגיאות לא קריטיות ומקרי ANR. אפשר להיכנס לCrashlytics לוח הבקרה כדי לראות את כל הדוחות והנתונים הסטטיסטיים ולבדוק אותם.
השלבים הבאים
התאמה אישית של הגדרת דוח הקריסות על ידי הוספת דיווח בהסכמה, יומנים, מפתחות ומעקב אחרי שגיאות לא קריטיות נוספות.
משלבים עם Google Play כדי שתוכלו לסנן את דוחות קריסת האפליקציה ל-Android לפי Google Play track ישירות בלוח הבקרה של Crashlytics. כך תוכלו להתמקד טוב יותר בגרסאות ספציפיות של לוחות הבקרה.
הצגת עקבות מחסנית ונתונים סטטיסטיים על קריסות לצד הקוד בחלון App Quality Insights ב-Android Studio (זמין החל מגרסה Electric Eel 2022.1.1).