במדריך למתחילים הזה נסביר איך להגדיר את Firebase Crashlytics באפליקציה באמצעות הפלאגין Crashlytics ל-Flutter, כדי שתוכלו לקבל דוחות מקיפים על קריסות במסוף Firebase.
ההגדרה של Crashlytics כוללת שימוש גם בכלי שורת הפקודה וגם בסביבת הפיתוח המשולבת (IDE). כדי לסיים את ההגדרה, תצטרכו לאלץ הטלת חריגה לבדיקה כדי לשלוח את דוח הקריסה הראשון ל-Firebase.
לפני שמתחילים
אם עדיין לא עשיתם זאת, עליכם להגדיר ולהפעיל את Firebase בפרויקט Flutter.
מומלץ: כדי לקבל באופן אוטומטי יומני breadcrumb כדי להבין את הפעולות של המשתמשים שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR, צריך להפעיל את Google Analytics בפרויקט Firebase.
אם Google Analytics לא מופעל בפרויקט הקיים ב-Firebase, תוכלו להפעיל אותו בכרטיסייה Integrations (שילובים) בקטע
במסוף > Project settingsFirebase. אם אתם יוצרים פרויקט חדש ב-Firebase, צריך להפעיל את Google Analytics במהלך תהליך יצירת הפרויקט.
חשוב לזכור שיומני נתיב הניווט זמינים לכל הפלטפורמות של Android ו-Apple שנתמכות ב-Crashlytics (למעט watchOS).
שלב 1: מוסיפים את 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 היא מוסיפה לאפליקציה את הפלאגין הנדרש Crashlytics Gradle.
בסיום, יוצרים מחדש את פרויקט Flutter:
flutter run
(אופציונלי) אם בפרויקט Flutter שלכם נעשה שימוש בדגל
--split-debug-info
(ואם רוצים גם בדגל--obfuscate
), צריך לבצע שלבים נוספים כדי להציג את מעקב ה-stack של האפליקציות בצורה קריא.פלטפורמות של Apple: חשוב לוודא שהפרויקט משתמש בתצורת הגרסה המומלצת (Flutter 3.12.0 ואילך ו-Crashlytics Flutter plugin 3.3.4 ואילך) כדי שהפרויקט יוכל ליצור ולהעלות באופן אוטומטי סמלי Flutter (קבצי dSYM) אל Crashlytics.
Android: משתמשים ב-Firebase CLI (גרסה 11.9.0 ואילך) כדי להעלות סמלי ניפוי באגים של Flutter. צריך להעלות את סמלי ניפוי הבאגים לפני שמדווחים על קריסה מ-build של קוד מעורבב.
בתיקיית השורש של פרויקט 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
כשמפתחים את האפליקציה
שלב 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, משתמשים ב-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 ישירות במרכז הבקרה Crashlytics. כך תוכלו למקד את מרכז הבקרה בצורה טובה יותר לגרסאות build ספציפיות.
הצגת נתוני סטטיסטיקה של קריסות וטראסים של סטאק לצד הקוד באמצעות החלון תובנות לגבי איכות האפליקציה ב-Android Studio (התכונה זמינה החל מגרסה Electric Eel 2022.1.1).