تصدير بيانات 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. وبالنسبة إلى كل تطبيق مرتبط، يتضمّن هذا الجدول جدولاً مجمّعًا يحتوي على البيانات من المزامنة اليومية.
  • في حال تفعيل تصدير بيانات Crashlytics BigQuery، سيتم تسجيل جميع التطبيقات المرتبطة أيضًا جدول الوقت الفعلي يحتوي على بتحديث البيانات باستمرار.

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

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

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

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

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

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

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

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

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

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

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

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

تفعيل بث Crashlytics في BigQuery

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

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

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

المشاهدات

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

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

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

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

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

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

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

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

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

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");

جافا

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");
    
    جافا
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. اكتب استعلامًا يستخدم حقل رقم تعريف المستخدم لدمج الأحداث في مجموعة بيانات BigQuery في "إحصاءات Google" تحتوي على أعطال في Crashlytics مجموعة بيانات 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 سلسلة ما إذا تم تعديل الجهاز، على سبيل المثال تمت إزالة جميع القيود عنه أو تزويده بإذن الوصول إلى الجذر (معدَّلة أو غير معدّلة)
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.UnknownStateException
رسالة استثناء سلسلة هناك رسالة مرتبطة بالاستثناء
الاستثناءات.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 سلسلة عنوان سلسلة المحادثات
accounts.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
الموضوع: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. في حال حذف لقد فعّلت تصدير بث بيانات Crashlytics BigQuery، يمكنك معرفة أنه صفحة المؤشرات في الوقت الفعلي بنموذج "مركز البيانات". يمكنك استخدام كعينة كقالب لإنشاء تقارير وتصورات جديدة بسرعة استنادًا إلى بيانات الأعطال الأولية لتطبيقك:

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