התאמה אישית של דוחות הקריסה ב-Firebase Crashlytics


בלוח הבקרה Crashlytics, אפשר ללחוץ על בעיה כדי לקבל דוח אירועים מפורט. אתם יכולים להתאים אישית את הדוחות האלה כדי לעזור לכם להבין טוב יותר מה קורה באפליקציה ואת הנסיבות של האירועים שדווחו ל-Crashlytics.

  • קבלת יומני ניווט באופן אוטומטי אם האפליקציה משתמשת Firebase SDK for Google Analytics. היומנים האלה מאפשרים לכם לראות פעולות של המשתמשים שהובילו לאירוע שנאסף Crashlytics באפליקציה.

  • ולכבות את הדיווח האוטומטי על קריסות להפעיל דיווח על הבעת הסכמה עבור המשתמשים. שימו לב, על ידי כברירת מחדל, Crashlytics אוסף דוחות קריסה באופן אוטומטי משתמשי האפליקציה.

הוספת מקשים בהתאמה אישית

מפתחות בהתאמה אישית עוזרים לכם לקבל את המצב הספציפי של האפליקציה שמוביל לקריסה. אפשר לשייך צמדי מפתח/ערך שרירותיים לדוחות הקריסה, ואז להשתמש את המפתחות המותאמים אישית לחיפוש ולסינון של דוחות קריסה במסוף Firebase.

  • במרכז הבקרה Crashlytics אפשר לחפש בעיות שתואמות למפתח מותאם אישית.

  • כשבודקים בעיה ספציפית במסוף, אפשר לראות מפתחות מותאמים אישית שמשויכים לכל אירוע (כרטיסיית המשנה מפתחות) ואפילו לסנן את אירועים לפי מפתחות מותאמים אישית (תפריט סינון שבחלק העליון של הדף).

משתמשים ב-method של המופע setCustomKey כדי להגדיר צמדי מפתח/ערך. שימו לב יש עומס יתר על setCustomKey כדי שהפרמטר value יוכל לקבל פקודות ראשוניות או ארגומנט String. הנה כמה דוגמאות:

Kotlin+KTX

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+KTX

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+KTX

ב-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 משייך את היומנים לנתוני הקריסה ומציג אותם בדף Crashlytics במסוף Firebase, בכרטיסייה יומנים.

אפשר להשתמש ב-log כדי לזהות בעיות. לדוגמה:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

הגדרת מזהים של משתמשים

כדי לאבחן בעיה, בדרך כלל כדאי לדעת מי מהמשתמשים שלכם נתקלו בה קריסה מסוימת. Crashlytics כולל דרך לזהות משתמשים באופן אנונימי ב- בדוחות הקריסה.

כדי להוסיף מזהי משתמשים לדוחות, צריך להקצות לכל משתמש מזהה ייחודי מספר מזהה, אסימון או ערך מגובב:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

אם תצטרכו למחוק מזהה משתמש אחרי שתגדירו אותו, תוכלו לאפס את הערך למחרוזת ריקה. ניקוי מזהה משתמש לא מסיר מזהה קיים רשומות Crashlytics. אם צריך למחוק רשומות שמשויכות למשתמש מזהה, יש לפנות לתמיכה של Firebase.

(Android NDK בלבד) הוספת מטא-נתונים לדוחות קריסה של NDK

אפשר לכלול את הכותרת crashlytics.h בקוד C++‎ כדי להוסיף מטא-נתונים לדוחות קריסה של NDK, כמו מפתחות מותאמים אישית, יומנים מותאמים אישית ומזהי משתמשים. כל האפשרויות האלה מתוארות הדף הזה שלמעלה.

crashlytics.h זמין בתור ספריית C++ לכותרות בלבד ב- מאגר GitHub של Firebase Android SDK.

קוראים את ההערות בקובץ הכותרת כדי לקבל הוראות לשימוש בממשקי ה-API של NDK ל-C++‎.

הכללת דוחות GWP-ASan לניפוי באגים בבעיות של פגיעה בזיכרון

Crashlytics יכול לעזור לכם לנפות באגים בקריות שנגרמו על ידי שגיאות זיכרון נייטיב, על ידי איסוף דוחות GWP-ASan. שגיאות שקשורות לזיכרון יכולות להיות קשורות לזיהום זיכרון באפליקציה, שהיא הסיבה העיקרית לחולשות באבטחת האפליקציה.

  • אפשר להציג את הנתונים האלה בדוח חדש של 'דוח קריסות של הזיכרון' Tab בזמן הלחיצה לפרטים של הבעיה Crashlytics לוח הבקרה.

  • אפשר גם להשתמש באות ובמסנן החדשים 'דוח GWP-ASan' כדי להציג במהירות את כל הבעיות בנתונים האלה.

תוכלו לקבל דוחות זיכרון של GWP-ASan אם להפעיל באופן מפורש את GWP-ASan באפליקציה שלך ולהשתמש ב-Crashlytics SDK עבור NDK גרסה 18.3.6 ואילך (Firebase BoM גרסה 31.3.0 ואילך). אפשר לבדוק את ההגדרה של GWP-ASan באמצעות קוד נייטיב לדוגמה במסמכי התיעוד של Android.

דיווח על חריגות לא קטלניות

בנוסף לדיווח אוטומטי על קריסות באפליקציה, Crashlytics מאפשרת לתעד חריגות לא קטלניות ולשלוח אותן בפעם הבאה שהאפליקציה מופעלת.

משתמשים בשיטה recordException כדי לתעד חריגות לא קטלניות בבלוק catch של האפליקציה. לדוגמה:

Kotlin+KTX

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
}

כל החריגים שנרשמו מופיעים כבעיות לא חמורות במסוף Firebase. סיכום הבעיה מכיל את כל המידע על מדינה שבדרך כלל אתם מקבלים ממנו קריסות, לצד פירוט לפי גרסת Android ומכשיר חומרה.

Crashlytics מעבד חריגים בשרשור ייעודי ברקע לצורך לצמצם את ההשפעה על הביצועים של האפליקציה. כדי לצמצם את הרשת של המשתמשים תנועה, Crashlytics קבוצות תועדו חריגים יחד ושולחות להם את בפעם הבאה שהאפליקציה תופעל.

אחזור יומני נתיבי ניווט

יומני נתיב הניווט עוזרים לכם להבין טוב יותר את האינטראקציות של משתמש עם האפליקציה שלכם עד לתאונה, לאירוע לא קטלני או לאירוע ANR. היומנים האלה יכולים שימושיים כשמנסים לשחזר את הבעיה ולנפות באגים.

יומני מיקומים באתר מופעלים על ידי Google Analytics, לכן כדי לקבל יומני מיקומים באתר, צריך להפעיל את Google Analytics לפרויקט Firebase שלכם הוספה של Firebase SDK for Google Analytics לאפליקציה. לאחר העמידה בדרישות האלה, יומני המיקומים באתר מתועדים באופן אוטומטי כלול בנתוני אירוע בכרטיסייה יומנים כאשר מציגים את הפרטים של בעיה.

ערכת ה-SDK Analytics האירוע screen_view מתעד באופן אוטומטי שמאפשר ליומני המיקומים להציג רשימה של מסכים שהוצגו לפני קריסה, אירוע לא חמור או אירוע ANR. יומן נתיבי ניווט screen_view מכיל firebase_screen_class.

יומני המיקומים באתר מאוכלסים גם אירועים מותאמים אישית שאתם מתעדים באופן ידני במסגרת האירוע סשן, כולל נתוני הפרמטר של האירוע. הנתונים האלה יכולים לעזור להציג סדרה של פעולות משתמש שהובילו לתאונה, לאירוע ANR או לאירוע לא קטלני.

לתשומת ליבכם: אתם יכולים לשלוט באיסוף ובשימוש בנתוני Google Analytics, כולל הנתונים שמאכלסים את יומני הלחם.

הפעלת דיווח על הסכמה

כברירת מחדל, Crashlytics אוסף דוחות קריסה באופן אוטומטי לכל משתמשי האפליקציה. כדי לתת למשתמשים שליטה רבה יותר על הנתונים שהם שולחים, אפשר להפעיל דיווח על הסכמה מפורשת על ידי השבתת הדיווח האוטומטי ושליחת נתונים אל Crashlytics רק כשבוחרים בכך בקוד:

  1. כדי להשבית את האיסוף האוטומטי, מוסיפים את התג meta-data בבלוק application בקובץ AndroidManifest.xml:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. כדי להפעיל את האיסוף למשתמשים נבחרים, צריך להפעיל את ההחרגה של איסוף הנתונים Crashlytics בזמן הריצה. ערך ההחרגה נשמר בכל ההפעלות של האפליקציה, כדי ש-Crashlytics יוכל לאסוף דוחות באופן אוטומטי. כדי לבטל את ההסכמה של דיווח הקריסה האוטומטי, מעבירים את false כערך הביטול. כשההגדרה מוגדרת עד false, הערך החדש לא יחול עד ההפעלה הבאה של האפליקציה.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

ניהול הנתונים של 'תובנות לגבי הקריסה'

התכונה 'תובנות לגבי קריסות' עוזרת לכם לפתור בעיות על ידי השוואה של נתוני המעקב אחרי סטאק (stack) שהוסרו מהם פרטי הזיהוי לנתוני מעקב מאפליקציות אחרות ב-Firebase, ומציינת אם הבעיה היא חלק ממגמה רחבה יותר. הכלי 'תובנות לגבי הקריסה' מספק משאבים לבעיות רבות כדי לעזור לכם לנפות את הבאגים שגרמו לקריסה.

התכונה 'תובנות לגבי הקריסה' משתמשת בנתוני קריסות נצברים כדי לזהות מגמות יציבות נפוצות. אם אתם לא רוצים לשתף את נתוני האפליקציה, תוכלו לבטל את ההסכמה לשימוש בתכונה 'תובנות לגבי קריסות' בתפריט תובנות לגבי קריסות בחלק העליון של רשימת הבעיות Crashlytics במסוף Firebase.