تصدير بيانات Firebase Crashlytics إلى BigQuery

يمكنك تصدير بياناتك في Firebase Crashlytics إلى BigQuery مقابل لمزيد من التحليل. تتيح لك BigQuery تحليل البيانات باستخدام لغة الاستعلامات البنيوية (SQL) BigQuery، يمكنك تصديرها إلى مقدّم خدمات سحابة إلكترونية آخر واستخدامها مع الرسومات البيانية ولوحات البيانات المخصّصة باستخدام "مركز البيانات من Google".

تفعيل التصدير إلى BigQuery

  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة "عمليات الدمج".
  2. في البطاقة BigQuery، انقر على ربط.
  3. اتّبِع التعليمات الظاهرة على الشاشة لتفعيل ميزة التصدير إلى "BigQuery".

إليك ما يحدث عند تفعيل التصدير إلى BigQuery:

لإيقاف التصدير إلى BigQuery، إلغاء ربط مشروعك في وحدة تحكّم Firebase.

ما هي البيانات التي يتم تصديرها إلى BigQuery؟

يتم تصدير بيانات Firebase Crashlytics إلى مجموعة بيانات BigQuery باسم firebase_crashlytics. بشكل تلقائي، سيتم إنشاء جداول فردية داخل مجموعة بيانات Crashlytics لكل تطبيق في مشروعك. تُنشئ Firebase اسمًا للجداول استنادًا إلى معرّف التطبيق، مع تحويل النقاط إلى شرطات سفلية، وإضافة اسم المنصة في النهاية.

على سبيل المثال، بيانات تطبيق Android باسم الحزمة com.google.test سيكون في جدول يسمى com_google_test_ANDROID. يتم تعديل جدول الحِزم هذا مرّة واحدة في اليوم. في حال تفعيل تصدير بيانات بث Crashlytics إلى BigQuery، سيتم أيضًا بث بيانات Crashlytics في الوقت الفعلي إلى جدول باسم com_google_test_ANDROID_REALTIME.

يمثّل كل صف في الجدول حدثًا وقع في التطبيق، بما في ذلك حالات الأعطال والأخطاء غير الفادحة وأخطاء ANR.

عملية تصدير بيانات Crashlytics إلى "BigQuery"

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

عند تفعيل ميزة Crashlytics تصدير بيانات البث إلى BigQuery، سيكون لديك أيضًا جدول في الوقت الفعلي بالإضافة إلى جدول الدفعات. في ما يلي اختلافات بين الجداول يجب أخذها في الاعتبار:

جدول البيانات المجمّعة جدول "الوقت الفعلي"
  • يتم تصدير البيانات مرة واحدة يوميًا.
  • يتم تخزين الأحداث بشكل دائم قبل الكتابة المجمّعة إلى BigQuery.
  • يمكن أن تكون البيانات إعادة التعبئة قبل 30 يومًا بمدة تصل إلى 30 يومًا.
  • يتم تصدير البيانات في الوقت الفعلي.
  • لا تتوفّر إمكانية إعادة التعبئة.

يُعد جدول الدُفعات مثاليًا للتحليل طويل المدى وتحديد الاتجاهات بمرور الوقت لأننا نخزّن الأحداث بشكل دائم قبل كتابتها، ويمكن إعادة ملؤها لمدة تصل إلى 30 يومًا. عندما نكتب البيانات في جدول الوقت الفعلي، تتم كتابة تلك البيانات على الفور في BigQuery، ما يجعلها مثالية للقوائم المتعلّقة بالوقت الحالي ولوحات البيانات والتنبيهات المخصّصة. يمكن أن يكون هذان الجدولان مع طلب دمج للحصول على وفوائدهما.

بشكلٍ تلقائي، يكون وقت انتهاء صلاحية القسم في جدول "الوقت الفعلي" هو 30 يومًا. للاطّلاع على كيفية تعديل هذا الإعداد، يُرجى الاطّلاع على ضبط تاريخ انتهاء صلاحية القسم في مستندات BigQuery.

تفعيل تصدير أحداث البث المباشر على Crashlytics إلى BigQuery

  1. في وحدة تحكّم Firebase، انتقِل إلى صفحة عمليات الدمج.
  2. في البطاقة BigQuery، انقر على إدارة.
  3. ضَع علامة في مربّع الاختيار تضمين البث.

يتيح هذا الإجراء البث لجميع تطبيقاتك المرتبطة.

ما هي الإجراءات التي يمكنك اتّخاذها بشأن البيانات التي تم تصديرها؟

تحتوي عمليات التصدير إلى BigQuery على بيانات الأعطال الأولية، بما في ذلك نوع الجهاز. نظام التشغيل أو الاستثناءات (تطبيقات Android) أو الأخطاء (تطبيقات Apple)، Crashlytics، بالإضافة إلى البيانات الأخرى.

مراجعة بيانات Crashlytics التي يتم تصديرها وجدولها بالضبط المخطط لاحقًا في هذه الصفحة.

استخدام نموذج "مركز البيانات"

لتفعيل البيانات في الوقت الفعلي في نموذج "مركز البيانات"، اتّبِع تعليمات عرض بيانات Crashlytics التي تم تصديرها باستخدام "مركز البيانات".

إنشاء طرق عرض

يمكنك تحويل طلبات البحث إلى عروض باستخدام واجهة مستخدم BigQuery. للحصول على تعليمات مفصّلة، يُرجى الاطّلاع على إنشاء طرق عرض في مستندات BigQuery.

تنفيذ طلبات البحث

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

المثال 1: الأعطال حسب اليوم

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

إليك مثال على طلب بحث خاص بتطبيق Android. استخدِم معرّف الحِزمة لتطبيق iOS. وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

المثال 2: العثور على الأعطال الأكثر انتشارًا

لتحديد أولويات خطط الإصدار بشكلٍ صحيح، عليك العثور على أهم 10 أخطاء تتعلّق بالانهيار في تطبيقك. يمكنك إنشاء طلب بحث يقدّم نقاط البيانات ذات الصلة.

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

المثال 3: أهم 10 أجهزة تواجه الأعطال

الخريف هو موسم شراء الهواتف الجديدة. تعلم شركتك أنّ هذا يعني أيضًا أنّه موسم جديد لظهور المشاكل المتعلّقة بالأجهزة، خاصةً على أجهزة Android. للحصول على بشأن التوافق، فإنك تقوم بتجميع استعلام يحدد 10 أجهزة شهدت أكبر عدد من الأعطال في الأسبوع الماضي (168 ساعة).

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

المثال 4: الفلترة حسب مفتاح مخصّص

إذا كنت مطوّر ألعاب وتريد معرفة مستوى تجاربك في الألعاب من أكثر الأعطال.

للمساعدة في تتبع هذه الإحصائيات، يمكنك تعيين مفتاح Crashlytics مخصّص يُسمى current_level، ويتم تحديثه في كل مرة يصل فيها المستخدم إلى مستوى جديد.

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

جافا

Crashlytics.setInt("current_level", 3);

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

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

المثال 5: استخراج رقم تعريف المستخدم

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

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT *
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
  user.id
 

المثال 6: العثور على جميع المستخدمين الذين يواجهون مشكلة تعطُّل معيّنة

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

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT user.id as user_id
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  issue_id = "ISSUE_ID"
  AND application.display_version = "APP_VERSION"
  AND user.id != ""
ORDER BY
  user.id;

المثال 7: عدد المستخدمين المتأثّرين بمشكلة عطل، مقسّمًا حسب البلد

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

لكتابة هذا الاستعلام، سيحتاج فريقك إلى القيام بما يلي:

  1. تفعيل تصدير بيانات Google Analytics إلى BigQuery. اطّلِع على تصدير بيانات المشروع إلى BigQuery.

  2. عدِّل تطبيقك لإرسال معرّف مستخدم إلى كلّ من حزمة تطوير البرامج (SDK) لنظام التشغيل Google Analytics وحزمة تطوير البرامج (SDK) لنظام التشغيل Crashlytics.

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    جافا

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. اكتب طلب بحث يستخدِم حقل "رقم تعريف المستخدِم" لدمج الأحداث في مجموعة بيانات Google Analytics مع الأعطال في مجموعة بيانات Crashlytics.

    إليك مثال على طلب بحث خاص بتطبيق Android. بالنسبة إلى تطبيق iOS، استخدم معرِّف الحزمة وIOS (بدلاً من اسم الحزمة وANDROID).

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c
    INNER JOIN  `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id
    WHERE
      c.issue_id = "ISSUE_ID"
      AND a._TABLE_SUFFIX BETWEEN '20190101'
      AND '20200101'
    GROUP BY
      c.issue_id,
      a.geo.country,
      c.user.id

المثال 8: أهم 5 مشاكل حتى الآن

إليك مثال على طلب بحث خاص بتطبيق Android. استخدِم معرّف الحِزمة لتطبيق iOS. وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

المثال 9: أهم 5 مشاكل منذ التاريخ DATE، بما في ذلك اليوم

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

في ما يلي مثال على طلب بحث لتطبيق Android. بالنسبة إلى تطبيق iOS، استخدِم معرّف الحِزمة وIOS (بدلاً من اسم الحزمة وANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`)
WHERE
  event_timestamp >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

فهم مخطط Crashlytics في BigQuery

عند إعداد عملية تصدير بيانات Crashlytics إلى BigQuery، Firebase تصدير الأحداث الأخيرة (الأعطال والأخطاء غير الفادحة وأخطاء ANR)، بما في ذلك الأحداث لمدة تصل إلى يومين قبل الرابط، مع خيار إعادة التعبئة لمدة تصل إلى 30 يومًا.

بدءًا من ذلك الوقت وحتى إيقاف عملية التصدير، يبدأ Firebase بالتصدير. حدثان (Crashlytics) يوميًا. قد تستغرق البيانات بضع دقائق متاحة في BigQuery بعد كل عملية تصدير.

مجموعات البيانات

ينشئ Crashlytics مجموعة بيانات جديدة في BigQuery للحساب Crashlytics. البيانات. تغطي مجموعة البيانات مشروعك بالكامل، حتى لو كانت تحتوي على تطبيقات متعددة.

الجداول

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

على سبيل المثال، ستكون بيانات تطبيق Android الذي يحمل اسم الحزمة com.google.test في جدول باسم com_google_test_ANDROID، وستكون بيانات الوقت الفعلي (في حال تفعيلها) في جدول باسم com_google_test_ANDROID_REALTIME.

تحتوي الجداول على مجموعة عادية من بيانات Crashlytics بالإضافة إلى أي مفاتيح Crashlytics مخصصة التي حددتها في تطبيقك.

الصفوف

يمثّل كل صف في الجدول خطأ واجهه التطبيق.

الأعمدة

تكون الأعمدة في الجدول متطابقة للأعطال والأخطاء غير الفادحة وأخطاء ANR. في حال حذف تم تفعيل عملية تصدير البث من "Crashlytics" إلى "BigQuery"، ثم جدول الوقت الفعلي على نفس الأعمدة الموجودة في جدول الدُفعة. يُرجى العِلم أنّه قد يكون لديك أعمدة في الصفوف تمثّل أحداثًا لا تحتوي على عمليات تتبُّع تسلسل استدعاء الدوال البرمجية.

يتم إدراج الأعمدة ضمن عملية التصدير في هذا الجدول:

اسم الحقل نوع البيانات الوصف
platform سلسلة منصّة التطبيق المسجَّلة في مشروع Firebase (القيم الصالحة: IOS أو ANDROID)
bundle_identifier سلسلة المعرّف الفريد للتطبيق المسجَّل في مشروع Firebase (على سبيل المثال، com.google.gmail)
بالنسبة إلى تطبيقات منصة Apple، يشير ذلك إلى معرّف حِزمة التطبيق.
بالنسبة إلى تطبيقات Android، يشير ذلك إلى اسم حِزمة التطبيق.
event_id سلسلة المعرّف الفريد للحدث
is_fatal قيمة منطقية ما إذا كان التطبيق قد تعطّل
error_type سلسلة نوع خطأ الحدث (على سبيل المثال، FATAL، NON_FATAL أو ANR أو غير ذلك)
issue_id سلسلة المشكلة المرتبطة بالحدث
variant_id سلسلة صيغة المشكلة المرتبطة بهذا الحدث
يُرجى العلم أنّه لا تتوفّر لبعض الأحداث صيغة مشكلة مرتبطة بها.
event_timestamp الطابع الزمني وقت وقوع الحدث
device سجلّ الجهاز الذي وقع عليه الحدث
device.manufacturer سلسلة الشركة المصنِّعة للجهاز
device.model سلسلة طراز الجهاز
device.architecture سلسلة على سبيل المثال، X86_32 أو X86_64 أو ARMV7 ARM64 أو ARMV7S أو ARMV7K
memory سجلّ حالة ذاكرة الجهاز
memory.used INT64 وحدات البايت المستخدمة من الذاكرة
memory.free INT64 عدد البايتات المتبقية في الذاكرة
storage سجلّ مساحة التخزين الدائمة للجهاز
storage.used INT64 عدد وحدات البايت لمساحة التخزين المستخدَمة
storage.free INT64 عدد البايتات المتبقية من مساحة التخزين
operating_system سجلّ تفاصيل نظام التشغيل على الجهاز
operating_system.display_version سلسلة إصدار نظام التشغيل على الجهاز
operating_system.name سلسلة اسم نظام التشغيل على الجهاز
operating_system.modification_state سلسلة ما إذا تم تعديل الجهاز أم لا (على سبيل المثال، التطبيق الذي تمت إزالة جميع القيود عنه هو MODIFIED بينما يكون التطبيق الجذر UNMODIFIED)
operating_system.type سلسلة (تطبيقات Apple فقط) نوع نظام التشغيل الذي يعمل على الجهاز (على سبيل المثال، IOS وMACOS وما إلى ذلك)
operating_system.device_type سلسلة نوع الجهاز (على سبيل المثال، MOBILE وTABLET TV وما إلى ذلك)، ويُعرف أيضًا باسم "فئة الجهاز"
application سجلّ التطبيق الذي أنشأ الحدث
application.build_version سلسلة نسخة إصدار التطبيق
application.display_version سلسلة
user سجلّ (اختياري) المعلومات التي يتم جمعها عن مستخدم التطبيق
user.name سلسلة (اختياري) اسم المستخدم
user.email سلسلة (اختياري) عنوان البريد الإلكتروني للمستخدم
user.id سلسلة (اختياري) معرّف خاص بالتطبيق مرتبط بالمستخدم
custom_keys سجلّ متكرّر أزواج المفتاح/القيمة التي يحددها المطوّر
custom_keys.key سلسلة مفتاح يحدّده المطوّر
custom_keys.value سلسلة قيمة يحدِّدها المطوِّر
installation_uuid سلسلة رقم تعريف يحدّد عملية تثبيت فريدة للتطبيق والجهاز
crashlytics_sdk_versions سلسلة إصدار حزمة SDK Crashlytics الذي أدى إلى إنشاء الحدث
app_orientation سلسلة على سبيل المثال، PORTRAIT وLANDSCAPE FACE_UP وFACE_DOWN وما إلى ذلك
device_orientation سلسلة على سبيل المثال، PORTRAIT وLANDSCAPE FACE_UP وFACE_DOWN وما إلى ذلك
process_state سلسلة BACKGROUND أو FOREGROUND
logs سجلّ متكرّر رسائل السجلّ المزوّدة بطابع زمني والتي أنشأها أداة تسجيل Crashlytics، في حال تفعيلها
logs.timestamp الطابع الزمني وقت إنشاء السجلّ
logs.message سلسلة الرسالة المسجَّلة
breadcrumbs سجلّ متكرّر Google Analytics علامات التنقل التي تتضمّن الطوابع الزمنية، في حال تفعيلها
breadcrumbs.timestamp الطابع الزمني الطابع الزمني المرتبط بشريط التنقّل
breadcrumbs.name سلسلة الاسم المرتبط بمسار التنقّل
breadcrumbs.params سجلّ متكرّر المَعلمات المرتبطة بمسار التنقّل
breadcrumbs.params.key سلسلة مفتاح مَعلمة مرتبط بشريط التنقّل
breadcrumbs.params.value سلسلة قيمة مَعلمة مرتبطة بمسار التنقّل
blame_frame سجلّ الإطار الذي تم تحديده على أنه السبب الأساسي للعُطل أو الخطأ
blame_frame.line INT64 رقم السطر في ملف اللقطة
blame_frame.file سلسلة اسم ملف اللقطة
blame_frame.symbol سلسلة رمز المواد المائية أو رمز المواد الأولية إذا كانت غير قابلة للترطيب
blame_frame.offset INT64 فهرس البايت في الصورة الثنائية التي تحتوي على الرمز
غير محدّد لاستثناءات Java
blame_frame.address INT64 العنوان في الصورة الثنائية التي تتضمن الرمز
لم يتم الضبط على إطارات Java
blame_frame.library سلسلة الاسم المعروض للمكتبة التي تتضمّن الإطار
blame_frame.owner سلسلة على سبيل المثال، DEVELOPER أو VENDOR RUNTIME أو PLATFORM أو SYSTEM
blame_frame.blamed قيمة منطقية ما إذا كان Crashlytics قد حدَّد أن هذا الإطار هو سبب العطل أو خطأ
exceptions سجلّ متكرّر (نظام التشغيل Android فقط) الاستثناءات التي حدثت خلال هذا الحدث يتم عرض الثناء المُدمجة بترتيب زمني عكسي، ما يعني أنّ السجلّ الأخير هو أول استثناء تم طرحه.
exceptions.type سلسلة نوع الاستثناء (على سبيل المثال، java.lang.IllegalStateException)
exceptions.exception_message سلسلة رسالة مرتبطة بالاستثناء
exceptions.nested قيمة منطقية صحيح لجميع القيم باستثناء القيمة الخاصة بالاستثناء الذي تم طرحه مؤخرًا (أي السجلّ الأول)
exceptions.title سلسلة عنوان سلسلة المحادثات
exceptions.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
exceptions.blamed قيمة منطقية صواب إذا حددت Crashlytics أن الاستثناء مسؤول عن خطأ أو عطل
exceptions.frames سجلّ متكرّر الإطارات المرتبطة بالاستثناء
exceptions.frames.line INT64 رقم السطر في ملف اللقطة
exceptions.frames.file سلسلة اسم ملف اللقطة
exceptions.frames.symbol سلسلة رمز المواد المائية أو رمز المواد الأولية إذا كانت غير قابلة للترطيب
exceptions.frames.offset INT64 فهرس البايت في الصورة الثنائية التي تحتوي على الرمز
غير محدّد لاستثناءات Java
exceptions.frames.address INT64 العنوان في الصورة الثنائية التي تتضمن الرمز
لم يتم الضبط على إطارات Java
exceptions.frames.library سلسلة الاسم المعروض للمكتبة التي تتضمّن الإطار
exceptions.frames.owner سلسلة على سبيل المثال، DEVELOPER أو VENDOR RUNTIME أو PLATFORM أو SYSTEM
exceptions.frames.blamed قيمة منطقية ما إذا كان Crashlytics قد حدَّد أن هذا الإطار هو سبب العطل أو خطأ
error سجلّ متكرّر (تطبيقات Apple فقط) الأخطاء غير المميتة
error.queue_name سلسلة قائمة الانتظار التي كانت سلسلة المحادثات عليها
error.code INT64 رمز الخطأ المرتبط بخطأ NSError المُسجَّل المخصّص للتطبيق
error.title سلسلة عنوان سلسلة المحادثات
error.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
error.blamed قيمة منطقية ما إذا كان Crashlytics قد رصد أنّ هذا الإطار هو سبب الخطأ
error.frames سجلّ متكرّر إطارات تتبُّع تسلسل استدعاء الدوال البرمجية
error.frames.line INT64 رقم السطر في ملف اللقطة
error.frames.file سلسلة اسم ملف اللقطة
error.frames.symbol سلسلة رمز المواد المائية أو رمز المواد الأولية إذا كانت غير قابلة للترطيب
error.frames.offset INT64 إزاحة البايت في الصورة الثنائية التي تحتوي على الرمز
error.frames.address INT64 العنوان في الصورة الثنائية التي تحتوي على الرمز
error.frames.library سلسلة الاسم المعروض للمكتبة التي تتضمّن الإطار
error.frames.owner سلسلة على سبيل المثال، DEVELOPER أو VENDOR RUNTIME أو PLATFORM أو SYSTEM
error.frames.blamed قيمة منطقية ما إذا كان Crashlytics قد رصد أنّ هذا الإطار هو سبب الخطأ
threads سجلّ متكرّر سلاسل المحادثات المتوفّرة في وقت الحدث
threads.crashed قيمة منطقية ما إذا تعطّلت سلسلة المحادثات أم لا
threads.thread_name سلسلة اسم سلسلة المحادثات
threads.queue_name سلسلة (تطبيقات Apple فقط) قائمة الانتظار التي كان يعمل عليها الخيط
threads.signal_name سلسلة اسم الإشارة التي تسبّبت في تعطُّل التطبيق، ولا تظهر إلا في حال تعطُّل التطبيق سلاسل محادثات مدمجة مع المحتوى
threads.signal_code سلسلة رمز الإشارة التي أدّت إلى تعطُّل التطبيق، ولا يظهر إلا في سلاسل المهام المبرمَجة التي تعطّلت
threads.crash_address INT64 عنوان الإشارة التي أدّت إلى تعطُّل التطبيق، لا يظهر إلا في سلاسل المهام الأصلية التي تعطّلت
threads.code INT64 (تطبيقات Apple فقط) رمز الخطأ للسجلّ المخصّص للتطبيق NSError
threads.title سلسلة عنوان سلسلة المحادثات
threads.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
threads.blamed قيمة منطقية ما إذا كان Crashlytics قد حدَّد أن هذا الإطار هو سبب العطل أو خطأ
threads.frames سجلّ متكرّر إطارات سلسلة المحادثات
threads.frames.line INT64 رقم السطر في ملف اللقطة
threads.frames.file سلسلة اسم ملف اللقطة
threads.frames.symbol سلسلة رمز المياه، أو رمز المواد الخام إذا كانت غير قابلة للترطيب
threads.frames.offset INT64 إزاحة البايت في الصورة الثنائية التي تحتوي على الرمز
threads.frames.address INT64 العنوان في الصورة الثنائية التي تحتوي على الرمز
threads.frames.library سلسلة الاسم المعروض للمكتبة التي تتضمّن الإطار
threads.frames.owner سلسلة على سبيل المثال، DEVELOPER أو VENDOR RUNTIME أو PLATFORM أو SYSTEM
threads.frames.blamed قيمة منطقية ما إذا كان Crashlytics قد حدَّد أن هذا الإطار هو سبب خطأ
unity_metadata.unity_version سلسلة إصدار Unity المُستخدَم على هذا الجهاز
unity_metadata.debug_build قيمة منطقية إذا كان هذا إصدارًا لتصحيح الأخطاء
unity_metadata.processor_type سلسلة نوع المعالج
unity_metadata.processor_count INT64 عدد المعالجات (النواة)
unity_metadata.processor_frequency_mhz INT64 تردد المعالجات بالميغاهرتز
unity_metadata.system_memory_size_mb INT64 حجم ذاكرة النظام بالميغابايت
unity_metadata.graphics_memory_size_mb INT64 ذاكرة الرسومات بالميغابايت
unity_metadata.graphics_device_id INT64 معرّف جهاز الرسومات
unity_metadata.graphics_device_vendor_id INT64 معرف مورد معالج الرسومات
unity_metadata.graphics_device_name سلسلة اسم جهاز الرسوميات
unity_metadata.graphics_device_vendor سلسلة بائع جهاز الرسومات
unity_metadata.graphics_device_version سلسلة إصدار جهاز الرسومات
unity_metadata.graphics_device_type سلسلة نوع جهاز الرسومات
unity_metadata.graphics_shader_level INT64 مستوى التظليل للرسومات
unity_metadata.graphics_render_target_count INT64 عدد أهداف العرض الرسومي
unity_metadata.graphics_copy_texture_support سلسلة إتاحة نسخ زخرفة الرسومات كما هو موضح في Unity API
unity_metadata.graphics_max_texture_size INT64 الحد الأقصى للحجم المخصّص لعرض الهيئة
unity_metadata.screen_size_px سلسلة حجم الشاشة بالبكسل، بتنسيق العرض × الارتفاع
unity_metadata.screen_resolution_dpi سلسلة عدد النقاط لكل بوصة في الشاشة كعدد عشري
unity_metadata.screen_refresh_rate_hz INT64 معدّل تحديث الشاشة بالهرتز

عرض بيانات "Crashlytics" التي تم تصديرها باستخدام "مركز البيانات"

تعمل أداة مركز البيانات من Google على تحويل مجموعة بيانات Crashlytics في BigQuery إلى تقارير أسهل في قراءة ومشاركتها وقابلة للتخصيص بالكامل.

لمعرفة المزيد من المعلومات عن استخدام "مركز البيانات"، جرِّب دليل البدء السريع في "مركز البيانات" مرحبًا بك في "مركز البيانات"

استخدام نموذج تقرير Crashlytics

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

  1. افتح Crashlytics نموذج لوحة بيانات "مركز البيانات".

  2. انقر على استخدام نموذج في أعلى يسار الصفحة.

  3. في القائمة المنسدلة مصدر بيانات جديد، اختَر إنشاء مصدر بيانات جديد.

  4. انقر على اختيار في البطاقة BigQuery.

  5. اختَر جدولاً يحتوي على بيانات Crashlytics التي تم تصديرها من خلال اختيار مشاريعي > PROJECT_ID > firebase_crashlytics > TABLE_NAME.

    يتوفّر جدول الدفعات دائمًا للاختيار. في حال حذف تم تفعيل عملية تصدير بيانات Crashlytics إلى BigQuery، وبعد ذلك يمكنك يمكنك تحديد جدول الوقت الفعلي بدلاً من ذلك.

  6. ضمن الإعدادات، اضبط مستوى نموذج Crashlytics على تلقائي.

  7. انقر على ربط لإنشاء مصدر البيانات الجديد.

  8. انقر على الإضافة إلى التقرير للعودة إلى نموذج Crashlytics.

  9. أخيرًا، انقر على إنشاء تقرير لإنشاء نسختك من Crashlytics نموذج لوحة البيانات في "مركز البيانات".