| בחירת פלטפורמה: | 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, אתם יכולים להפעיל אותו בדף
Settings > Integrations במסוף Firebase.
שימו לב שיומני פעולות משתמש זמינים לכל הפלטפורמות של 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 בגרסה 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 (לא שם החבילה)
דוגמה למזהה אפליקציית Android ב-Firebase: 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"), ),יוצרים ומריצים את האפליקציה.
כדי לשלוח את הדוח הראשון של האפליקציה, מאלצים את המערכת להקפיץ את החריגה לבדיקה:
פותחים את האפליקציה במכשיר הבדיקה או באמולטור.
באפליקציה, לוחצים על כפתור החריגה לבדיקה שהוספתם באמצעות הקוד שלמעלה.
במסוף Firebase, נכנסים לדף DevOps & Engagement (DevOps ומעורבות) > לוח הבקרה של Crashlytics כדי לבדוק אם דוח הקריסה לדוגמה התקבל.
אם רעננתם את המסוף ואתם עדיין לא רואים את הקריסה לבדיקה אחרי חמש דקות, הפעילו את יומן ניפוי הבאגים כדי לבדוק אם האפליקציה שולחת דוחות קריסה.
זה הכול! עכשיו Crashlytics עוקב אחרי קריסות באפליקציה, וב-Android גם אחרי שגיאות לא קריטיות ומקרי ANR. בלוח הבקרה של Crashlytics אפשר לראות את כל הדוחות והנתונים הסטטיסטיים ולחקור אותם.
השלבים הבאים
התאמה אישית של הגדרת דוח הקריסות על ידי הוספת דיווח בהבעת הסכמה, יומנים, מפתחות ומעקב אחר שגיאות לא קריטיות נוספות.
שילוב עם Google Play כדי לסנן את דוחות הקריסה של האפליקציה ל-Android לפי מסלול Google Play ישירות במרכז הבקרה של Crashlytics. כך תוכלו להתמקד בגרסאות build ספציפיות במרכז הבקרה.
הצגת דוחות קריסות ונתונים סטטיסטיים של קריסות לצד הקוד בחלון App Quality Insights ב-Android Studio (זמין החל מגרסת Electric Eel 2022.1.1).
ייצוא הנתונים אל BigQuery או אל Cloud Logging לניתוח מתקדם ולתכונות מתקדמות, כמו שליחת שאילתות לגבי הנתונים, יצירת לוחות בקרה בהתאמה אישית והגדרת התראות בהתאמה אישית.