במדריך למתחילים הזה מוסבר איך להגדיר את Firebase Crashlytics באפליקציה עם הפלאגין Crashlytics Flutter כדי שניתן יהיה לקבל קריסה מקיפה דוחות במסוף Firebase.
ההגדרה של Crashlytics כוללת שימוש גם בכלי שורת הפקודה וגם בסביבת הפיתוח המשולבת (IDE). כדי לסיים את ההגדרה, עליך לאלץ את דוח הקריסה הראשון ל-Firebase.
לפני שמתחילים
אם עדיין לא עשיתם זאת, מגדירים ומפעילים את Firebase בפרויקט Flutter.
מומלץ: כדי לקבל באופן אוטומטי יומני מיקומים כדי להבין את פעולות המשתמשים המובילות לקריסה, אירוע לא חמור או ANR, עליך להפעיל את Google Analytics בפרויקט Firebase.
אם Google Analytics לא מופעל בפרויקט הקיים ב-Firebase, תוכלו להפעיל אותו בכרטיסייה 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
), צריך לבצע שלבים נוספים כדי להציג את מעקב ה-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: מזהה האפליקציה ל-Android ב-Firebase (ולא שם החבילה)
דוגמה למזהה אפליקציה ב-Firebase ל-Android:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
: אותה ספרייה להעביר לדגל--split-debug-info
במהלך בניית האפליקציה
שלב 2: מגדירים גורמים מטפלים בקריסות
אפשר לזהות באופן אוטומטי את כל השגיאות שהופקו ב-Flutter
framework על ידי ביטול של 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, צריך לאלץ הטלת חריגת בדיקה.
מוסיפים לאפליקציה קוד שבאמצעותו אפשר לאלץ חריגה מבדיקה שודר.
אם הוספתם handler שגיאות שקורא
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 (זמין החל מ- עם צללית חשמלית 2022.1.1).