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

يمكنك تصدير بيانات Crashlytics إلى BigQuery لإجراء مزيد من التحليل. تسمح لك أداة BigQuery بتحليل البيانات باستخدام BigQuery SQL وتصديرها إلى مقدّم خدمات سحابية آخر واستخدامها للتمثيل البصري ولوحات البيانات المخصّصة باستخدام "مركز البيانات من Google".

تفعيل BigQuery Export

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

عند ربط مشروعك بأداة BigQuery:

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

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

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

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

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

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

تفعيل تصدير بث Crashlytics BigQuery

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

لا يتوفر تصدير بث Crashlytics BigQuery في وضع الحماية في BigQuery.

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

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

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

وفقًا للإعدادات التلقائية، يكون وقت انتهاء صلاحية القسم في جدول الوقت الفعلي 30 يومًا. للتعرّف على كيفية تعديل ذلك، اطّلِع على مقالة تعديل انتهاء صلاحية القسم.

تفعيل بث Crashlytics في BigQuery

لتفعيل ميزة البث، انتقِل إلى قسم Crashlytics من صفحة عمليات الدمج في BigQuery وضع علامة في مربّع الاختيار تضمين البث.

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

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

المشاهدات

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

ما أهمية البيانات التي يتم تصديرها؟

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

العمل باستخدام بيانات Firebase Crashlytics في BigQuery

توضح الأمثلة التالية الاستعلامات التي يمكنك تشغيلها على بيانات Crashlytics. وتُنشئ طلبات البحث هذه تقارير غير متاحة في لوحة بيانات Crashlytics.

أمثلة على طلبات بحث Crashlytics

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

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

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

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

المثال 2: رصد الأعطال الأكثر انتشارًا

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

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
  `projectId.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 أجهزة تتعطّل

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

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `projectId.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 ويتم تعديله في كل مرة يصل فيها المستخدم إلى مستوى جديد.

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

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

Java

Crashlytics.setInt("current_level", 3);

باستخدام هذا المفتاح في BigQuery Export، يكتبون طلبًا للإبلاغ عن توزيع قيم current_level المرتبطة بكل حدث تعطُّل:

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

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

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

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

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

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

SELECT user.id as user_id
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  issue_id = "YOUR_ISSUE_ID"
  AND application.display_version = ""
  AND user.id != ""
ORDER BY
  user.id;

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

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

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

  1. تفعيل عمليات تصدير BigQuery لخدمة "إحصاءات Google" راجِع تصدير بيانات المشروع إلى BigQuery.

  2. حدِّث التطبيق لتمرير رقم تعريف المستخدم في كل من حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Google" وحزمة تطوير البرامج (SDK) الخاصة بأداة Crashlytics.

    Objective-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Swift
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. اكتب طلب بحث يستخدم حقل User-ID لربط الأحداث في مجموعة بيانات BigQuery في "إحصاءات Google" التي تحتوي على أعطال في مجموعة بيانات BigQuery:

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

المثال 8: أهم 5 مشاكل اليوم

يتطلّب هذا الإجراء تفعيل عملية تصدير بيانات BigQuery Export الخاصة بـ Crashlytics

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `your_project.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، بما في ذلك اليوم

يتطلّب هذا الإجراء تفعيل عملية تصدير بث بيانات BigQuery لـ Crashlytics.

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

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID`)
WHERE
  event_timestamp >= "2020-01-13"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

فهم مخطط Firebase Crashlytics في BigQuery

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

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

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

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

الجداول

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

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

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

الصفوف

يشير كل صف في الجدول إلى خطأ واجهه التطبيق.

الأعمدة

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

بدون قوائم تتبُّع تسلسل استدعاء الدوال البرمجية

الأعمدة المتوفّرة في الصفوف التي تمثّل الأحداث بدون عمليات تتبُّع تسلسل استدعاء الدوال البرمجية

اسم الحقل نوع البيانات الوصف
platform سلسلة تطبيقات Apple أو Android
معرّف_الحزمة سلسلة رقم تعريف الحزمة، مثل com.google.gmail
event_id (معرّف_الحدث) سلسلة معرّف فريد للحدث
يكون_قاتلاً منطقية ما إذا كان التطبيق قد تعطّل
نوع_الخطأ سلسلة نوع الخطأ المتعلّق بالحدث (FATAL أو NON_FATAL أو ANR)
معرّف_المشكلة سلسلة المشكلة المرتبطة بالحدث
معرّف_الصيغة سلسلة صيغة المشكلة المرتبطة بهذا الحدث
يُرجى العلم أنّ بعض الأحداث لا تتضمّن صيغة مشكلة مرتبطة بها.
event_timestamp الطابع الزمني وقت وقوع الحدث
الجهاز سجلّ الجهاز الذي وقع عليه الحدث
الجهاز.Manufacturerr سلسلة الشركة المصنِّعة للجهاز
جهاز.model سلسلة طراز الجهاز
هندسة الجهاز سلسلة X86_32 أو X86_64 أو ARMV7 أو ARM64 أو ARMV7S أو ARMV7K
ذاكرة سجلّ حالة ذاكرة الجهاز
تم استخدام الذاكرة INT64 وحدات البايت المستخدمة من الذاكرة
مساحة خالية من الذاكرة INT64 وحدات البايت المتبقية من الذاكرة
التخزين سجلّ مساحة التخزين الدائمة للجهاز
مساحة التخزين مُستخدَمة INT64 وحدات البايت المستخدمة من مساحة التخزين
مساحة تخزين مجانية INT64 وحدات البايت المتبقية من مساحة التخزين
نظام_التشغيل سجلّ تفاصيل نظام التشغيل على الجهاز
work_system.display_version سلسلة إصدار نظام التشغيل المثبَّت على الجهاز
operating_system.name سلسلة اسم نظام التشغيل على الجهاز
work_system.modification_state سلسلة ما إذا تم تعديل الجهاز، على سبيل المثال تمت إزالة جميع القيود عنه أو تزويده بإذن الوصول إلى الجذر (MODIFIED أو إلغاء التعديل)
work_system.type. سلسلة نوع نظام التشغيل الذي يعمل على الجهاز (مثل IOS وMACOS)، وهو متوفّر فقط لتطبيقات أنظمة Apple الأساسية
work_system.device_type. سلسلة نوع الجهاز (على سبيل المثال، جهاز جوّال أو جهاز لوحي أو تلفزيون أو غير ذلك)، ويُعرف أيضًا باسم "فئة الجهاز"
التطبيق سجلّ التطبيق الذي أنشأ الحدث
application.build_version سلسلة نسخة إصدار التطبيق
application.display_version سلسلة
المستخدم سجلّ اختياري: المعلومات التي يتم جمعها عن مستخدم التطبيق
user.name سلسلة اختياري: اسم المستخدم
user.email سلسلة اختياري: عنوان البريد الإلكتروني للمستخدم
user.id سلسلة اختياري: رقم تعريف خاص بالتطبيق مرتبط بالمستخدم
مفاتيح_مخصّصة سجلّ متكرّر أزواج المفتاح/القيمة التي يحددها المطوّر
custom_keys.key سلسلة مفتاح يحدده المطوّر
قيمة_المفاتيح_المخصصة سلسلة قيمة يحدِّدها المطوِّر
معرّف_التثبيت سلسلة رقم تعريف يحدِّد تطبيقًا فريدًا وعملية تثبيت
Crashlytics_sdk_versions سلسلة إصدار حزمة تطوير البرامج (SDK) في Crashlytics الذي أنشأ الحدث
اتجاه_التطبيق سلسلة PORTRAIT أو LANDSCAPE أو FACE_UP أو FACE_DOWN
اتجاه_الجهاز سلسلة PORTRAIT أو LANDSCAPE أو FACE_UP أو FACE_DOWN
حالة_المعالجة سلسلة الخلفية أو المقدمة
قطع خشب سجلّ متكرّر رسائل السجلّ ذات الطابع الزمني التي ينشئها مسجّل Crashlytics، إذا تم تفعيلها
Log.timestamp الطابع الزمني وقت إنشاء السجلّ
السجلّات.message سلسلة الرسالة المسجَّلة
أشرطة التنقّل سجلّ متكرّر مسارات التنقّل في "إحصاءات Google" ذات الطابع الزمني، في حال تفعيلها
crafts.timestamp الطابع الزمني الطابع الزمني المرتبط بشريط التنقّل
breadcrumbs.name سلسلة الاسم المرتبط بشريط التنقل
crafts.params سجلّ متكرّر المعلّمات المرتبطة بشريط التنقّل
crafts.params.key سلسلة مفتاح مَعلمة مرتبط بشريط التنقّل
crafts.params.value سلسلة قيمة مَعلمة مرتبطة بمسار التنقّل
إطار_اللوم سجلّ الإطار الذي تم تحديده على أنه السبب الأساسي للعُطل أو الخطأ
blame_frame.line INT64 رقم سطر ملف الإطار
blame_frame.file سلسلة اسم ملف الإطار
blame_frame.symbol سلسلة رمز شرب الماء، أو رمز غير قابل للشرب
blame_frame.offset INT64 إزاحة البايت إلى الصورة الثنائية التي تحتوي على الرمز، والتي يتم إلغاء تعيينها لاستثناءات Java
blame_frame.address INT64 العنوان في الصورة الثنائية التي تحتوي على الرمز، غير محدد لإطارات Java
مكتبة اللوم سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
blame_frame.owner سلسلة مطور البرامج أو المورِّد أو RUNTIME أو المنصة أو النظام
blame_frame.blamed منطقية ما إذا كان تحليل Crashlytics قد توصل إلى أن هذا الإطار هو سبب العطل أو الخطأ
الاستثناءات سجلّ متكرّر أجهزة Android فقط: الاستثناءات التي حدثت أثناء هذا الحدث يتم تقديم الاستثناءات المتداخلة بترتيب زمني عكسي (قراءة: السجل الأخير هو أول استثناء تم إسقاطه)
نوع الاستثناءات سلسلة نوع الاستثناء، مثل java.lang. رصدStateException
رسالة استثناء سلسلة هناك رسالة مرتبطة بالاستثناء
الاستثناءات.nested منطقية صحيح للجميع ما عدا استثناء آخر تم طرحه (أي السجل الأول)
استثناءات.title سلسلة عنوان سلسلة المحادثات
الاستثناءات.العنوان الفرعي سلسلة العنوان الفرعي لسلسلة المحادثات
استثناءات.blamed منطقية صحيح إذا حدد Crashlytics أن الاستثناء هو المسؤول عن الخطأ أو العطل
الاستثناءات.إطارات سجلّ متكرّر الإطارات المرتبطة بالاستثناء
استثناءات.frames.line INT64 رقم سطر ملف الإطار
ملف الاستثناءات.frames.file سلسلة اسم ملف الإطار
استثناءات.frames.symbol سلسلة رمز شرب الماء، أو رمز غير قابل للشرب
استثناءات.frames.offset INT64 إزاحة البايت إلى الصورة الثنائية التي تحتوي على الرمز، والتي يتم إلغاء تعيينها لاستثناءات Java
عنوان الاستثناءات.frames.address INT64 العنوان في الصورة الثنائية التي تحتوي على الرمز، غير محدد لإطارات Java
استثناءات.frames.library سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
استثناءات.frames.owner سلسلة مطور البرامج أو المورِّد أو RUNTIME أو المنصة أو النظام
استثناءات.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد توصل إلى أن هذا الإطار هو سبب العطل أو الخطأ
خطأ سجلّ متكرّر تطبيقات Apple فقط: الأخطاء غير الفادحة
error.queue_name سلسلة قائمة الانتظار التي كانت سلسلة المحادثات عليها
رمز الخطأ 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 سلسلة مطور البرامج أو المورِّد أو RUNTIME أو المنصة أو النظام
error.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد قرر أن هذا الإطار هو سبب الخطأ
سلاسل المحادثات سجلّ متكرّر توفُّر سلاسل محادثات في وقت الحدث
accounts.crashed منطقية ما إذا تعطّلت سلسلة المحادثات أم لا
accounts.thread_name سلسلة اسم سلسلة المحادثات
اسم سلسلة المحادثات سلسلة تطبيقات Apple فقط: قائمة الانتظار التي كانت سلسلة المحادثات عليها
accounts.signal_name سلسلة اسم الإشارة التي تسببت في تعطُّل التطبيق، ولا تظهر إلا في سلاسل المحادثات الأصلية المُتعطّلة
accounts.signal_code سلسلة رمز الإشارة التي تسببت في تعطُّل التطبيق، ولا تظهر إلا في سلاسل التعليمات الأصلية التي تعطّلت
accounts.crash_address INT64 يشير هذا العنوان إلى عنوان الإشارة التي تسببت في تعطُّل التطبيق، ولا يظهر إلا في سلاسل المحادثات الأصلية التي تم تعطّلها.
رمز الرسائل INT64 تطبيقات Apple فقط: رمز الخطأ الخاص بالخطأ NSError المخصّص الذي تم تسجيله في التطبيق
accounts.title سلسلة عنوان سلسلة المحادثات
سلاسل المحادثات الفرعية سلسلة العنوان الفرعي لسلسلة المحادثات
الموضوع:blamed منطقية ما إذا كان تحليل Crashlytics قد توصل إلى أن هذا الإطار هو سبب العطل أو الخطأ
accounts.frames سجلّ متكرّر إطارات سلسلة المحادثات
accounts.frames.line INT64 رقم سطر ملف الإطار
accounts.frames.file سلسلة اسم ملف الإطار
accounts.frames.symbol سلسلة رمز شرب السوائل، أو الرمز الأولي إذا كانت غير صالحة للشرب
accounts.frames.offset INT64 إزاحة البايت إلى الصورة الثنائية التي تحتوي على الرمز
accounts.frames.address INT64 العنوان في الصورة الثنائية الذي يحتوي على الرمز
accounts.frames.library. سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
accounts.frames.owner سلسلة مطور البرامج أو المورِّد أو RUNTIME أو المنصة أو النظام
accounts.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_ دقيق_dpi سلسلة عدد النقاط لكل بوصة (DPI) للشاشة كرقم نقطة عائمة
unity_metadata.screen_refresh_rate_hz INT64 معدّل تحديث الشاشة بالهرتز

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

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

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

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

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

  1. افتح نموذج لوحة بيانات Crashlytics Data Studio.
  2. انقر على استخدام النموذج في أعلى يسار الصفحة.
  3. في القائمة المنسدلة مصدر بيانات جديد، اختَر إنشاء مصدر بيانات جديد.
  4. انقر على اختيار في بطاقة BigQuery.
  5. اختَر جدولاً يحتوي على بيانات Crashlytics التي تم تصديرها عن طريق اختيار مشاريعي > [your-project-name] > firebase_crashlytics > [your-table-name]. يكون جدول الدُفعات متاحًا دائمًا للاختيار، فإذا تم تفعيل تصدير بث بيانات Chrome في Crashlytics، يمكنك اختيار جدول الوقت الفعلي بدلاً من ذلك.
  6. ضمن الإعدادات، اضبط مستوى نموذج Crashlytics على تلقائي.
  7. انقر على ربط لإنشاء مصدر البيانات الجديد.
  8. انقر على إضافة إلى التقرير للعودة إلى نموذج Crashlytics.
  9. أخيرًا، انقر على إنشاء تقرير لإنشاء نسختك من نموذج لوحة بيانات مركز البيانات في Crashlytics.