במרכז הבקרה Crashlytics, אפשר ללחוץ על בעיה מסוימת ולקבל דוח מפורט על האירוע. אתם יכולים להתאים אישית את הדוחות האלה כדי להבין טוב יותר מה קורה באפליקציה ואת הנסיבות שקשורות לאירועים שמדווחים ל-Crashlytics.
מגדירים את האפליקציה כך שתתעד ביומן מפתחות בהתאמה אישית, הודעות ביומן בהתאמה אישית ומזהי משתמשים.
דיווח על חריגים אל Crashlytics.
קבלת יומני נתיב באופן אוטומטי אם האפליקציה משתמשת ב-Firebase SDK ל-Google Analytics. היומנים האלה מאפשרים לכם לראות את פעולות המשתמשים שהובילו לאירוע שנאסף על ידי Crashlytics באפליקציה שלכם.
משביתים את הדיווח האוטומטי על קריסות ומפעילים דיווח בהסכמה עבור המשתמשים. שימו לב שכברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה לגבי כל המשתמשים באפליקציה.
הוספת מפתחות בהתאמה אישית
מקשים בהתאמה אישית עוזרים לכם לקבל את המצב הספציפי של האפליקציה לפני הקריסה. אפשר לשייך צמדים שרירותיים של מפתח/ערך לדוחות הקריסה, ואז להשתמש במפתחות המותאמים אישית כדי לחפש ולסנן דוחות קריסה במסוף Firebase.
במרכז הבקרה של Crashlytics, אפשר לחפש בעיות שתואמות למפתח מותאם אישית.
כשבודקים בעיה ספציפית במסוף, אפשר לראות את המפתחות המותאמים אישית שמשויכים לכל אירוע (כרטיסיית המשנה מפתחות), ואפילו לסנן את האירועים לפי מפתחות מותאמים אישית (התפריט מסנן בחלק העליון של הדף).
משתמשים ב-instance 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
לשיטת המופע setCustomKeys
:
Kotlin
ב-Kotlin, הפונקציונליות הקיימת פשוטה יותר משימוש ב-CustomKeysAndValues
builder.
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 Console, בכרטיסייה Logs.
מומלץ להשתמש ב-log
כדי לזהות בעיות. לדוגמה:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
הגדרת מזהי משתמשים
כדי לאבחן בעיה, לעיתים קרובות מועיל לדעת אילו מהמשתמשים נתקלו בקריסה מסוימת. Crashlytics כולל דרך לזיהוי משתמשים באופן אנונימי בדוחות הקריסות.
כדי להוסיף מזהי משתמשים לדוחות, צריך להקצות לכל משתמש מזהה ייחודי בצורה של מספר מזהה, אסימון או ערך גיבוב:
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.
קוראים את ההערות בקובץ הכותרת כדי לקבל הוראות לשימוש בממשקי NDK C++ API.
הכללת דוחות GWP-ASan לצורך ניפוי באגים בבעיות שקשורות להשחתת זיכרון
Crashlytics יכול לעזור לכם לנפות באגים בקריסות שנגרמות משגיאות זיכרון נייטיב על ידי איסוף דוחות GWP-ASan. השגיאות האלה שקשורות לזיכרון יכולות להיות משויכות להשחתת זיכרון באפליקציה, שזה הגורם העיקרי לפרצות אבטחה באפליקציות.
אפשר לראות את הנתונים האלה בכרטיסייה החדשה 'Memory stack traces' (מעקב אחר הקצאת זיכרון) כשלוחצים על פרטי בעיה בלוח הבקרה 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
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 }
כל החריגים שתועדו מופיעים כבעיות לא קריטיות במסוף Firebase. סיכום הבעיה מכיל את כל פרטי הסטטוס שמתקבלים בדרך כלל מקריסות, וגם פירוטים לפי גרסת Android ומכשיר חומרה.
Crashlytics מעבד חריגים בשרשור רקע ייעודי כדי לצמצם את הפגיעה בביצועים של האפליקציה. כדי לצמצם את תעבורת הרשת של המשתמשים, Crashlytics מאגד חריגים שנרשמו ושולח אותם בפעם הבאה שהאפליקציה מופעלת.
אחזור יומנים של נתיבי ניווט
יומני נתוני נתיב (breadcrumb) מאפשרים לכם להבין טוב יותר את האינטראקציות שהיו למשתמש עם האפליקציה לפני קריסה, אירוע לא קטלני או אירוע ANR. היומנים האלה יכולים לעזור כשמנסים לשחזר בעיה ולנפות באגים.
היומנים של נתיבי הניווט מבוססים על Google Analytics, ולכן כדי לקבל אותם צריך להפעיל את Google Analytics בפרויקט Firebase ולהוסיף את Firebase SDK ל-Google Analytics לאפליקציה. אחרי שממלאים את הדרישות האלה, היומנים של נתיבי הניווט נכללים אוטומטית בנתוני האירוע בכרטיסייה יומנים כשמציגים את פרטי הבעיה.
Analytics SDK
מתעד באופן אוטומטי את האירוע screen_view
מה שמאפשר להציג ביומני ה-breadcrumb רשימה של מסכים שנצפו לפני הקריסה, האירוע הלא קטלני או האירוע מסוג ANR. יומן של נתיב ניווט מכיל פרמטר firebase_screen_class
.screen_view
יומני נתיב הניווט כוללים גם אירועים מותאמים אישית שאתם מתעדים באופן ידני במהלך הסשן של המשתמש, כולל נתוני הפרמטרים של האירוע. הנתונים האלה יכולים לעזור להציג סדרה של פעולות משתמש שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR.
חשוב לדעת שאפשר לשלוט באיסוף ובשימוש בנתוני Google Analytics, כולל הנתונים שמאכלסים את יומני הנתיבים.
הפעלת דיווח על הסכמה
כברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה לגבי כל המשתמשים באפליקציה. כדי לתת למשתמשים יותר שליטה על הנתונים שהם שולחים, אתם יכולים להפעיל דיווח בהסכמה. לשם כך, צריך להשבית את הדיווח האוטומטי ולשלוח נתונים אל Crashlytics רק כשאתם בוחרים לעשות זאת בקוד.
בבלוק
application
בקובץAndroidManifest.xml
, מוסיפים תגmeta-data
כדי להשבית את האיסוף האוטומטי:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
מפעילים את האיסוף עבור משתמשים נבחרים על ידי קריאה ל-Crashlytics data collection override בזמן הריצה. ערך ההחלפה נשמר בכל ההפעלות הבאות של האפליקציה, כך ש-Crashlytics יכול לאסוף באופן אוטומטי דוחות עבור המשתמש הזה.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
אם המשתמש יבחר בהמשך להפסיק את איסוף הנתונים, תוכלו להעביר את הערך
false
כערך ברירת המחדל. הערך הזה יחול בפעם הבאה שהמשתמש יפעיל את האפליקציה, וימשיך לחול בכל ההפעלות הבאות של האפליקציה על ידי אותו משתמש.
ניהול נתונים של תובנות לגבי קריסות
התובנות לגבי קריסות עוזרות לכם לפתור בעיות על ידי השוואה בין עקבות מחסנית (stack traces) אנונימיים שלכם לבין עקבות מאפליקציות אחרות ב-Firebase, ומודיעות לכם אם הבעיה שלכם היא חלק ממגמה רחבה יותר. במקרים רבים, Crash Insights מספק גם מקורות מידע שיעזרו לכם לנפות באגים בקריסה.
התכונה 'תובנות לגבי קריסות' משתמשת בנתוני קריסות מצטברים כדי לזהות מגמות נפוצות של יציבות. אם אתם לא רוצים לשתף את נתוני האפליקציה, אתם יכולים לבטל את ההסכמה לשיתוף נתונים ב-Crash Insights. כדי לעשות זאת, פותחים את התפריט Crash Insights בחלק העליון של רשימת הבעיות Crashlytics ב-Firebase Console.