| בחירת פלטפורמה: | iOS+ Android Flutter Unity |
אפשר ללחוץ על בעיה מסוימת ולקבל דוח אירועים מפורט במרכז הבקרה של DevOps ומעורבות > Crashlytics במסוף Firebase. אתם יכולים להתאים אישית את הדוחות האלה כדי להבין טוב יותר מה קורה באפליקציה ואת הנסיבות שקשורות לאירועים שמדווחים ל-Crashlytics.
מגדירים את האפליקציה כך שתתעד מפתחות בהתאמה אישית, הודעות בהתאמה אישית ביומן ומזהי משתמשים.
דיווח על חריגים אל Crashlytics.
אם האפליקציה משתמשת ב-Firebase SDK ל-Google Analytics, אתם מקבלים באופן אוטומטי יומני פעולות משתמש. היומנים האלה מאפשרים לכם לראות את פעולות המשתמשים שהובילו לאירוע שנאסף על ידי Crashlytics באפליקציה.
משביתים את הדיווח האוטומטי על קריסות ומפעילים דיווח בהצטרפות למשתמשים. שימו לב שכברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה מכל משתמשי האפליקציה.
הוספת מפתחות בהתאמה אישית
מפתחות בהתאמה אישית עוזרים לכם לקבל את המצב הספציפי של האפליקציה לפני הקריסה. אתם יכולים לשייך צמדים שרירותיים של מפתח/ערך לדוחות הקריסה, ואז להשתמש במפתחות בהתאמה אישית כדי לחפש ולסנן דוחות קריסה במרכז הבקרה של DevOps ומעורבות > Crashlytics במסוף Firebase.
אתם יכולים לחפש בעיות שתואמות למפתח מותאם אישית.
כשבודקים בעיה ספציפית במסוף, אפשר לראות את המפתחות המותאמים אישית שמשויכים לכל אירוע (כרטיסיית המשנה Keys) ואפילו לסנן את האירועים לפי מפתחות מותאמים אישית (התפריט Filter בחלק העליון של הדף).
משתמשים ב-method של המכונה setCustomKey כדי להגדיר צמדי מפתח/ערך. שימו לב שהפונקציה setCustomKey עמוסה מדי בשביל הפרמטר value, כדי לקבל כל ארגומנט פרימיטיבי או ארגומנט String. הנה כמה דוגמאות:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
אפשר גם לשנות את הערך של מפתח קיים על ידי קריאה למפתח והגדרת ערך אחר. לדוגמה:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
כדי להוסיף צמדי מפתח/ערך בכמות גדולה, מעבירים מופע של CustomKeysAndValues ל-method של המופע setCustomKeys:
Kotlin
ב-Kotlin, הפונקציונליות הקיימת פשוטה יותר משימוש ב-builder של CustomKeysAndValues.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
הוספת הודעות מותאמות אישית ביומן
כדי לקבל הקשר נוסף לאירועים שמובילים לקריסה, אתם יכולים להוסיף לאפליקציה יומני Crashlytics בהתאמה אישית. מערכת Crashlytics משייכת את היומנים לנתוני הקריסה ומציגה אותם בכרטיסייה יומנים כשאתם צופים בפרטי הבעיה (כל הבעיות מוצגות במרכז הבקרה של DevOps ומעורבות המשתמשים > Crashlytics במסוף Firebase).
אפשר להשתמש ב-log כדי לזהות בעיות. לדוגמה:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
הגדרת מזהי משתמשים
כדי לאבחן בעיה, בדרך כלל כדאי לדעת אצל אילו משתמשים התרחשה קריסה מסוימת. Crashlytics כולל דרך לזהות משתמשים באופן אנונימי בדוחות הקריסה.
כדי להוסיף מזהי משתמשים לדוחות, צריך להקצות לכל משתמש מזהה ייחודי בצורת מספר מזהה, אסימון או ערך גיבוב (hash):
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
אם תצטרכו למחוק מזהה משתמש אחרי שהגדרתם אותו, אפסו את הערך למחרוזת ריקה. ניקוי של מזהה משתמש לא מסיר רשומות Crashlytics קיימות. אם אתם צריכים למחוק רשומות שמשויכות למזהה משתמש, פנו לתמיכה של Firebase.
(Android NDK בלבד) הוספת מטא-נתונים לדוחות קריסה של NDK
אפשר לכלול את הכותרת crashlytics.h בקוד ה-C++ כדי להוסיף מטא-נתונים לדוחות קריסה של NDK, כמו מפתחות בהתאמה אישית, יומנים בהתאמה אישית ומזהי משתמשים. כל האפשרויות האלה מתוארות למעלה בדף הזה.
crashlytics.h זמין כספריית C++ עם כותרת בלבד במאגר של Firebase Android SDK ב-GitHub.
כדי לקבל הוראות לשימוש בממשקי ה-API של NDK C++, קראו את ההערות בקובץ הכותרת.
הכללת דוחות GWP-ASan כדי לנפות באגים בבעיות של פגיעה בזיכרון
Crashlytics יכול לעזור לכם לנפות באגים בקריסות שנגרמו בגלל שגיאות זיכרון נייטיב, על ידי איסוף דוחות GWP-ASan. השגיאות האלה שקשורות לזיכרון יכולות להיות קשורות לפגיעה בזיכרון באפליקציה, שהיא הגורם העיקרי לפרצות אבטחה באפליקציות.
במרכז הבקרה DevOps & Engagement > Crashlytics במסוף Firebase, אתם יכולים לבצע את הפעולות הבאות עם הנתונים האלה:
כדי לראות את הנתונים האלה, לוחצים על פרטי הבעיה ואז על הכרטיסייה החדשה "דוחות קריסות בזיכרון".
אתם יכולים להשתמש באות ובמסנן החדשים של "דוח GWP-ASan" כדי לראות במהירות את כל הבעיות שקשורות לנתונים האלה.
כדי לקבל דוחות זיכרון של GWP-ASan, צריך להפעיל את GWP-ASan באופן מפורש באפליקציה ולהשתמש ב-SDK של Crashlytics ל-NDK בגרסה 18.3.6 ואילך (Firebase BoM בגרסה 31.3.0 ואילך). אפשר לבדוק את ההגדרה של GWP-ASan באמצעות קוד ה-Native לדוגמה במסמכי התיעוד של Android.
דיווח על חריגות לא קריטיות
בנוסף לדיווח האוטומטי על קריסות של האפליקציה, Crashlytics מאפשר לתעד חריגות לא קריטיות ולשלוח אותן אליכם בפעם הבאה שהאפליקציה תופעל.
משתמשים ב-method recordException כדי לתעד חריגות לא קריטיות בבלוקים של catch באפליקציה. לדוגמה:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
בנוסף, אפשר לצרף מפתחות בהתאמה אישית לחריגה הספציפית שלא גרמה לקריסה. לדוגמה:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
כל החריגות שתועדו מופיעות כבעיות לא קריטיות בלוח הבקרה DevOps ומעורבות > Crashlytics במסוף Firebase. סיכום הבעיה מכיל את כל המידע על המצב שבדרך כלל מקבלים מקריסות, יחד עם פירוט לפי גרסת Android ומכשיר החומרה.
Crashlytics מעבד חריגים בשרשור ייעודי ברקע כדי לצמצם את ההשפעה על הביצועים של האפליקציה. כדי להפחית את התנועה ברשת של המשתמשים, Crashlytics אוסף את החריגים שנרשמו ביומן ושולח אותם בפעם הבאה שהאפליקציה מופעלת.
קבלת יומני פעולות משתמש
יומני פעולות המשתמש עוזרים לכם להבין טוב יותר את האינטראקציות של המשתמש עם האפליקציה לפני קריסה, אירוע לא קריטי או אירוע ANR. היומנים האלה יכולים לעזור לכם לשחזר בעיה ולנפות באגים.
יומני פעולות המשתמש מופעלים על ידי Google Analytics, אז כדי לקבל אותם צריך להפעיל את Google Analytics בפרויקט Firebase ולהוסיף לאפליקציה את Firebase SDK ל-Google Analytics. אחרי שעומדים בדרישות האלה, יומני פעולות המשתמש נכללים באופן אוטומטי בנתוני האירוע בכרטיסייה יומנים כשמציגים את פרטי הבעיה (אפשר לראות את כל הבעיות במרכז הבקרה DevOps והתעניינות > Crashlytics במסוף Firebase).
ערכת ה-SDK של Analytics מתעדת באופן אוטומטי את האירוע screen_view, וכך יומני פעולות משתמש יכולים להציג רשימה של המסכים שהמשתמשים צפו בהם לפני הקריסה, השגיאה הלא קריטית או אירוע ה-ANR. יומן פעולות משתמש של screen_view מכיל פרמטר firebase_screen_class.
יומני פעולות המשתמש מאוכלסים גם באירועים מותאמים אישית שאתם מתעדים באופן ידני בסשן של המשתמש, כולל נתוני הפרמטרים של האירוע. הנתונים האלה יכולים להראות סדרה של פעולות משתמש שהובילו לקריסה, לאירוע לא קריטי או לאירוע ANR.
חשוב לזכור שאתם יכולים לשלוט באיסוף הנתונים של Google Analytics ובשימוש בהם, כולל הנתונים שמאכלסים את יומני פעולות המשתמש.
הפעלת דיווח על הבעת הסכמה
כברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה מכל משתמשי האפליקציה. כדי לתת למשתמשים יותר שליטה על הנתונים שהם שולחים, אתם יכולים להפעיל דיווח בהבעת הסכמה. לשם כך, צריך להשבית את הדיווח האוטומטי ולשלוח נתונים אל Crashlytics רק כשאתם בוחרים לעשות זאת בקוד.
בבלוק
applicationשל הקובץAndroidManifest.xml, מוסיפים תגmeta-dataכדי להשבית את האיסוף האוטומטי:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />כדי להפעיל את האיסוף עבור משתמשים נבחרים, צריך להפעיל את שינוי ברירת המחדל של איסוף הנתונים של Crashlytics בזמן הריצה. ערך ההחלפה נשמר בכל ההפעלות הבאות של האפליקציה, כך ש-Crashlytics יכול לאסוף דוחות באופן אוטומטי עבור אותו משתמש.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
אם המשתמש יבטל בהמשך את ההסכמה לאיסוף נתונים, תוכלו להעביר את הערך
falseבתור ערך ההחרגה. הערך הזה יחול בפעם הבאה שהמשתמש יפעיל את האפליקציה, ויישאר בתוקף בכל ההפעלות הבאות של האפליקציה על ידי המשתמש הזה.
ניהול הנתונים של Crash Insights
התכונה "תובנות לגבי קריסות" עוזרת לפתור בעיות על ידי השוואה בין דוחות הקריסות האנונימיים שלכם לבין דוחות של אפליקציות Firebase אחרות, ומאפשרת לכם לדעת אם הבעיה שלכם היא חלק ממגמה רחבה יותר. במקרים רבים, התובנות לגבי קריסות כוללות גם מקורות מידע שיעזרו לכם לנפות באגים בקריסה.
התכונה "תובנות לגבי קריסות" משתמשת בנתוני קריסות נצברים כדי לזהות מגמות נפוצות שקשורות ליציבות. אם אתם מעדיפים לא לשתף את נתוני האפליקציה, אתם יכולים לבטל את ההצטרפות לתובנות לגבי קריסות בתפריט תובנות לגבי קריסות שבחלק העליון של רשימת הבעיות בלוח הבקרה DevOps ומעורבות > Crashlytics במסוף Firebase.
השלבים הבאים
- ייצוא הנתונים אל BigQuery או אל Cloud Logging לניתוח מתקדם ושימוש בתכונות כמו שאילתות על הנתונים, יצירת מרכזי בקרה בהתאמה אישית והגדרת התראות בהתאמה אישית.