تخصيص تقارير أعطال Firebase Crashlytics


في لوحة بيانات Crashlytics، يمكنك النقر على مشكلة والحصول على تفاصيل تقرير الحدث. يمكنك تخصيص هذه التقارير لمساعدتك على فهم ما يحدث في تطبيقك والظروف المحيطة بالأحداث التي يتم الإبلاغ عنها Crashlytics

  • الحصول على سجلات شريط التنقل تلقائيًا إذا كان تطبيقك يستخدم حزمة تطوير البرامج (SDK) لمنصّة Firebase الخاصة بالإصدار Google Analytics تمنحك هذه السجلات رؤية في إجراءات المستخدمين التي أدت إلى حدث تم جمعه عبر Crashlytics في تطبيقك.

  • أوقِف الإبلاغ عن الأعطال تلقائيًا و تفعيل إعداد تقارير الموافقة للمستخدمين يُرجى العلم أنّه يتم تلقائيًا جمع Crashlytics لتقارير الأعطال لجميع مستخدمي تطبيقك.

إضافة مفاتيح مخصّصة

تساعدك المفاتيح المخصّصة في معرفة الحالة المحدّدة لتطبيقك التي أدّت إلى حدوث عطل. يمكنك ربط أزواج مفاتيح/قيم عشوائية بتقارير الأعطال، ومن ثمَّ استخدام المفاتيح المخصَّصة للبحث عن تقارير الأعطال وفلترتها في وحدة تحكُّم Firebase.

  • يمكنك البحث عن المشاكل في لوحة بيانات Crashlytics. التي تطابق مفتاحًا مخصصًا

  • عند مراجعة مشكلة معيّنة في وحدة التحكّم، يمكنك الاطّلاع على المفاتيح المخصّصة المرتبطة بكل حدث (علامة التبويب الفرعية المفاتيح) وحتى فلترة الأحداث حسب مفاتيح مخصّصة (قائمة فلترة في أعلى الصفحة).

استخدِم طريقة المثيل 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 إلى طريقة مثيل setCustomKeys:

Kotlin+KTX

بالنسبة إلى Kotlin، تعد الوظائف الحالية أبسط من استخدام منصة إنشاء 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 لحزمة تطوير البرامج (SDK) لنظام التشغيل Android من Firebase

اقرأ التعليقات في ملف العنوان للحصول على تعليمات حول استخدام واجهات برمجة تطبيقات NDK C++.

تضمين تقارير GWP-ASan لتصحيح مشاكل تلف الذاكرة

يمكن أن يساعدك Crashlytics في تصحيح أخطاء الأعطال الناتجة عن أخطاء الذاكرة الأصلية عن طريق جمع تقارير GWP-ASan. يمكن أن تكون هذه الأخطاء المتعلّقة بالذاكرة مرتبطة بفساد ملف الذاكرة في تطبيقك، وهو السبب الرئيسي لظهور ثغرات أمنية في التطبيق.

  • يمكنك عرض هذه البيانات في علامة تبويب جديدة بعنوان "تتبُّع تسلسل استدعاء الدوال البرمجية للذاكرة" عند النقر على تفاصيل المشكلة في ملف Crashlytics لوحة البيانات.

  • يمكنك أيضًا استخدام "تقرير GWP-ASan" الجديد الإشارة والفلترة لعرض التفاصيل جميع المشكلات المتعلقة بهذه البيانات.

يمكنك الحصول على تقارير الذاكرة التي تم إنشاؤها باستخدام أداة GWP-ASan إذا لم تفعيل GWP-ASan صراحةً في تطبيقك واستخدام حزمة تطوير البرامج (SDK) Crashlytics للإصدار 18.3.6 من حزمة تطوير البرامج (SDK) بالإصدار 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" لمشروعك على Firebase إضافة حزمة تطوير البرامج (SDK) لمنصة Firebase للموقع الإلكتروني Google Analytics إلى تطبيقك. بعد استيفاء هذه المتطلبات، يتم تلقائيًا إنشاء سجلات شريط التنقل. مضمّنة في بيانات الحدث ضمن علامة التبويب السجلات عند عرض التفاصيل المشكلة.

تُسجِّل حزمة تطوير البرامج (SDK) لنظام التشغيل Analytics حدث screen_view تلقائيًا، ما يتيح لسجلّات مسار التنقّل عرض قائمة بالشاشات التي تمّ عرضها قبل حدث تعطُّل أو حدث غير مميت أو حدث ANR. يحتوي سجلّ شريط التنقّل screen_view على مَعلمة firebase_screen_class.

تتم تعبئة سجلات شريط التنقل أيضًا بأي الأحداث المخصّصة التي تسجّلها يدويًا داخل سجلّ المستخدم بما في ذلك بيانات مَعلمات الحدث يمكن أن تساعد هذه البيانات في عرض سلسلة إجراءات المستخدمين التي أدت إلى تعطُّل أو حدث غير فادح أو خطأ ANR.

لاحظ أنه يمكنك التحكّم في جمع بيانات Google Analytics واستخدامها والتي تتضمّن البيانات التي تُعبّئ سجلات شريط التنقّل.

تفعيل إعداد تقارير الموافقة

يجمع Crashlytics تلقائيًا تقارير الأعطال لجميع مستخدمي التطبيق. لمنح المستخدمين المزيد من التحكم في البيانات التي يرسلونها، يمكنك تفعيل تمكين إعداد التقارير عن طريق إيقاف إعداد التقارير التلقائية وإرسال البيانات فقط إلى Crashlytics عند اختيار إدخاله في الرمز:

  1. في القسم application من ملف AndroidManifest.xml، أضِف علامة meta-data لإيقاف عملية الجمع التلقائي للبيانات:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. تفعيل عملية جمع البيانات لمستخدمين محدّدين من خلال طلب بيانات Crashlytics تجاوز المجموعة في وقت التشغيل. تظل قيمة إلغاء الإعدادات محفوظة في جميع عمليات بدء استخدام تطبيقك حتى تتمكّن Crashlytics من جمع التقارير تلقائيًا. لإيقاف reportingتلقائي للأعطال، مرِّر false كقيمة إلغاء. عند ضبطه على false، لا يتم تطبيق القيمة الجديدة إلا بعد التشغيل التالي للتطبيق.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

إدارة بيانات "إحصاءات الأعطال"

تساعدك ميزة "إحصاءات الأعطال" في حلّ المشاكل من خلال مقارنة عمليات التتبّع الخاصة بك والتي تم إخفاء هويتها بعمليات التتبّع من تطبيقات Firebase الأخرى وإعلامك إذا كانت مشكلتك جزءًا من مؤشر أكبر. بالنسبة إلى العديد من المشاكل، تقدّم ميزة "إحصاءات الأعطال" أيضًا موارد لمساعدتك في تصحيح أخطاء الأعطال.

تستخدم "إحصاءات الأعطال" بيانات الأعطال المجمّعة لتحديد مؤشرات الاستقرار الشائعة. إذا أردت عدم مشاركة بيانات تطبيقك، يمكنك إيقاف "إحصاءات الأعطال". من قائمة إحصاءات الأعطال في أعلى قائمة مشاكل Crashlytics في وحدة تحكّم Firebase.