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

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

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

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

لا يتوفّر تصدير بث BigQuery من Crashlytics في وضع الحماية في 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: الأعطال حسب اليوم

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

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" وحزمة تطوير البرامج 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" التي تتضمّن أعطالاً في مجموعة بيانات 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 مشاكل حتى الآن

يتطلب تفعيل تصدير بث محتوى Crashlytics BigQuery.

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، بما في ذلك اليوم

يتطلب تفعيل تصدير بث محتوى Crashlytics BigQuery.

في هذا المثال، ندمج الجداول المجمّعة والجداول في الوقت الفعلي لإضافة معلومات الوقت الفعلي إلى البيانات المجمّعة الموثوق بها. نظرًا لأن 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 الطابع الزمني وقت وقوع الحدث
الجهاز سجلّ الجهاز الذي وقع عليه الحدث
شركة تصنيع جهاز سلسلة الشركة المصنّعة للجهاز
Device.model سلسلة طراز الجهاز
هندسة الجهاز سلسلة X86_32 أو X86_64 أو ARMV7 أو ARM64 أو ARMV7S أو ARMV7K
ذاكرة سجلّ حالة ذاكرة الجهاز
image.used (مُستعمَل) INT64 وحدات البايت المستخدمة من الذاكرة
Memory.free INT64 وحدات البايت المتبقية من الذاكرة
التخزين سجلّ مساحة التخزين الدائمة للجهاز
Storage.used INT64 وحدات بايت مساحة التخزين المستخدمة
Storage.free INT64 وحدات بايت من مساحة التخزين المتبقية
نظام التشغيل سجلّ تفاصيل نظام التشغيل على الجهاز
segmentation_system.display_version سلسلة إصدار نظام التشغيل على الجهاز
operating_system.name سلسلة اسم نظام التشغيل على الجهاز
segmentation_system.modification_state سلسلة ما إذا تم تعديل الجهاز، على سبيل المثال، تمت إزالة جميع القيود عنه أو الوصول إلى الجذر (MODIFIED أو UNMODIFIED)
segmentation_system.type سلسلة نوع نظام التشغيل الذي يعمل على الجهاز (على سبيل المثال، IOS وMACOS)، وهو متوفّر فقط لتطبيقات أنظمة Apple الأساسية
segmentation_system.device_type سلسلة نوع الجهاز (على سبيل المثال، MOBILE أو TABLET أو تلفزيون أو غير ذلك)، يُعرف أيضًا باسم "فئة الجهاز"
التطبيق سجلّ التطبيق الذي أنشأ الحدث
app.build_version سلسلة إصدار إصدار التطبيق
app.display_version سلسلة
المستخدم سجلّ اختياري: المعلومات التي يتم جمعها عن مستخدم التطبيق
user.name سلسلة اختياري: اسم المستخدم
user.email سلسلة اختياري: عنوان البريد الإلكتروني للمستخدم
user.id سلسلة اختياري: رقم تعريف خاص بالتطبيق مرتبط بالمستخدم
مفاتيح_مخصّصة سجلّ متكرّر أزواج المفتاح/القيمة التي يحددها المطوّر
custom_keys.key سلسلة مفتاح من تحديد المطوّر
قيمة custom_keys.value سلسلة قيمة يحددها المطوّر
install_uuid سلسلة رقم تعريف يحدِّد تطبيقًا فريدًا ويتم تثبيت الجهاز
Crashlytics_sdk_versions سلسلة إصدار حزمة تطوير البرامج (SDK) الخاصة بـ Crashlytics الذي أنشأ الحدث
اتّجاه_التطبيق سلسلة وضع "صورة" أو "منظر أفقي" أو "وجه متجه للأعلى" أو "عكس صحيح"
اتجاه_الجهاز سلسلة وضع "صورة" أو "منظر أفقي" أو "وجه متجه للأعلى" أو "عكس صحيح"
حالة_المعالجة سلسلة معلومات عن المقدمة
قطع خشب سجلّ متكرّر رسائل السجلّ ذات الطابع الزمني التي أنشأها مسجّل Crashlytics، في حال تفعيلها
السجلات.timestamp الطابع الزمني عند إنشاء السجلّ
الرسائل. سلسلة الرسالة المُسجَّلة
أشرطة التنقّل سجلّ متكرّر أشرطة التنقّل في "إحصاءات Google" ذات الطابع الزمني، في حال تفعيلها
شريط التنقُّل الطابع الزمني الطابع الزمني المرتبط بشريط التنقّل
breadcrumbs.name سلسلة الاسم المرتبط بشريط التنقّل
شريط التنقُّل سجلّ متكرّر المَعلمات المرتبطة بمسار التنقّل
AdsBots.params.key سلسلة مفتاح معلَمة مرتبط بشريط التنقّل
AdsBots.params.value سلسلة قيمة معلَمة مرتبطة بمسار التنقّل
إطار_اللوم سجلّ الإطار المحدد كسبب أساسي للتعطُّل أو الخطأ
لوم_frame.line INT64 رقم السطر لملف الإطار
لوم_frame.file سلسلة اسم ملف الإطار
لوم_frame.symbol سلسلة رمز شرب الماء، أو الرمز الأولي إذا كان غير قابل للشرب
lumme_frame.offset INT64 إزاحة البايت في الصورة الثنائية التي تحتوي على الرمز، بدون ضبط لاستثناءات Java
لوم_frame.address INT64 لم يتم ضبط العنوان في الصورة الثنائية التي تحتوي على الرمز، مع إطارات Java
لوم_frame.library سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
لوم_frame.owner سلسلة مطوّر البرامج أو المورّد أو وقت التشغيل أو المنصة أو النظام
لوم_إطار.لوم منطقية ما إذا كان تحليل Crashlytics قد حدّد أنّ هذا الإطار هو سبب التعطُّل أو الخطأ
الاستثناءات سجلّ متكرّر أجهزة Android فقط: الاستثناءات التي حدثت أثناء هذا الحدث يتم تقديم الاستثناءات المتداخلة بترتيب زمني عكسي (قراءة: السجل الأخير هو أول استثناء تم طرحه)
unavailable.type سلسلة نوع الاستثناء، مثل java.lang.legalStateException
unavailable.exception_message سلسلة رسالة مرتبطة بالاستثناء
استثناءات.متداخلة منطقية صحيح للكل ما عدا الاستثناء الأخير (أي السجل الأول)
الاستبعاد.عنوان سلسلة عنوان سلسلة المحادثات
استثناءات.العنوان الفرعي سلسلة العنوان الفرعي لسلسلة المحادثات
استثناءات.لوم منطقية صحيح إذا قرر Crashlytics أن الاستثناء مسؤول عن الخطأ أو التعطُّل
الاستثناءات سجلّ متكرّر الإطارات المرتبطة بالاستثناء
unavailable.frames.line INT64 رقم السطر لملف الإطار
الاستثناءات.إطارات.ملف سلسلة اسم ملف الإطار
unavailable.frames.symbol سلسلة رمز شرب الماء، أو الرمز الأولي إذا كان غير قابل للشرب
unavailable.frames.offset INT64 إزاحة البايت في الصورة الثنائية التي تحتوي على الرمز، بدون ضبط لاستثناءات Java
unavailable.frames.address INT64 لم يتم ضبط العنوان في الصورة الثنائية التي تحتوي على الرمز، مع إطارات Java
unavailable.frames.library سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
unavailable.frames.owner سلسلة مطوّر البرامج أو المورّد أو وقت التشغيل أو المنصة أو النظام
install.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد حدّد أنّ هذا الإطار هو سبب التعطُّل أو الخطأ
خطأ سجلّ متكرّر تطبيقات Apple فقط: الأخطاء غير الفادحة
error.queue_name سلسلة قائمة الانتظار التي كانت سلسلة التعليمات قيد التشغيل فيها
رمز الخطأ INT64 رمز خطأ مرتبط بخطأ NSError المسجّل للتطبيق
error.title سلسلة عنوان سلسلة المحادثات
error.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
خطأ.لومي منطقية ما إذا كان تحليل 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 سلسلة مطوّر البرامج أو المورّد أو وقت التشغيل أو المنصة أو النظام
error.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد حدّد أنّ هذا الإطار هو سبب الخطأ
سلاسل المحادثات سجلّ متكرّر سلاسل المحادثات المتوفّرة في وقت الحدث
crashed منطقية ما إذا كانت سلسلة المحادثات قد تعطلت أم لا
thread.thread_name سلسلة اسم سلسلة المحادثات
اسم_سلسلة_السلاسل سلسلة تطبيقات Apple فقط: قائمة الانتظار التي كانت سلسلة المحادثات قيد التشغيل عليها
thread.signal_name سلسلة اسم الإشارة التي تسببت في تعطُّل التطبيق، ولا تظهر إلا في سلاسل المحادثات الأصلية المعطّلة
thread.signal_code سلسلة يشير هذا المصطلح إلى رمز الإشارة الذي تسبب في تعطُّل التطبيق، وهو لا يتوفّر إلا في سلاسل التعليمات الأصلية المعطّلة.
عناوين السلاسل.crash_address INT64 عنوان الإشارة التي تسببت في تعطل التطبيق، وهو موجود فقط في سلاسل التعليمات الأصلية المعطلة
thread.code INT64 تطبيقات Apple فقط: رمز الخطأ لخطأ NSError المُسجل الخاص بالتطبيق
عنوان المواضيع سلسلة عنوان سلسلة المحادثات
segmentation.subtitle سلسلة العنوان الفرعي لسلسلة المحادثات
موضوع الإضاءات منطقية ما إذا كان تحليل Crashlytics قد حدّد أنّ هذا الإطار هو سبب التعطُّل أو الخطأ
إطارات سلاسل المحادثات سجلّ متكرّر إطارات سلسلة المحادثات
thread.frames.line INT64 رقم السطر لملف الإطار
ملفs.frames.file سلسلة اسم ملف الإطار
thread.frames.symbol سلسلة رمز شرب الماء، أو الرمز الأولي إذا كان الجهاز غير قابل للشرب
segmentation.frames.offset INT64 إزاحة البايت في الصورة الثنائية التي تحتوي على التعليمة البرمجية
إطارات السلاسل.العنوان INT64 العنوان الموجود في الصورة الثنائية التي تحتوي على الرمز
thread.frames.library سلسلة الاسم المعروض للمكتبة التي تحتوي على الإطار
إطارات.rw سلسلة مطوّر البرامج أو المورّد أو وقت التشغيل أو المنصة أو النظام
s.frames.planmed منطقية ما إذا كان تحليل 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_process_dpi سلسلة عدد النقاط لكل بوصة (DPI) في الشاشة كرقم نقطة عائمة
unity_metadata.screen_refresh_rate_hz INT64 معدَّل تحديث الشاشة بالهرتز

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

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

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

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

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

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