يمكنك تصدير بياناتك في Firebase Crashlytics إلى BigQuery مقابل لمزيد من التحليل. تتيح لك BigQuery تحليل البيانات باستخدام لغة الاستعلامات البنيوية (SQL) BigQuery، يمكنك تصديرها إلى مقدّم خدمات سحابة إلكترونية آخر واستخدامها مع الرسومات البيانية ولوحات البيانات المخصّصة باستخدام "مركز البيانات من Google".
تفعيل التصدير إلى BigQuery
- في وحدة تحكّم Firebase، انتقِل إلى صفحة "عمليات الدمج".
- في البطاقة BigQuery، انقر على ربط.
- اتّبِع التعليمات الظاهرة على الشاشة لتفعيل ميزة التصدير إلى "BigQuery".
إليك ما يحدث عند تفعيل التصدير إلى BigQuery:
بشكل تلقائي، يتم ربط جميع التطبيقات في مشروعك بـ BigQuery وأي يتم ربط التطبيقات التي تضيفها لاحقًا إلى المشروع تلقائيًا BigQuery يمكنك إدارة عمليات اختيار التطبيقات التي ترسل البيانات إلى BigQuery
تُعدّ Firebase عمليات مزامنة يومية لبياناتك من مشروعك على Firebase إلى BigQuery.
تصدِّر Firebase نسخة من بياناتك الحالية إلى BigQuery. بالنسبة إلى كل تطبيق مرتبط، يتضمّن ذلك جدول دفعة يحتوي على البيانات من المزامنة اليومية.
إذا كنت تفعيل تصدير بث Crashlytics إلى 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، سيكون لديك أيضًا جدول في الوقت الفعلي بالإضافة إلى جدول الدفعات. في ما يلي اختلافات بين الجداول يجب أخذها في الاعتبار:
جدول البيانات المجمّعة | جدول "الوقت الفعلي" |
---|---|
|
|
يُعد جدول الدُفعات مثاليًا للتحليل طويل المدى وتحديد الاتجاهات بمرور الوقت لأننا نخزّن الأحداث بشكل دائم قبل كتابتها، ويمكن إعادة ملؤها لمدة تصل إلى 30 يومًا. عندما نكتب البيانات في جدول الوقت الفعلي، تتم كتابة تلك البيانات على الفور في BigQuery، ما يجعلها مثالية للقوائم المتعلّقة بالوقت الحالي ولوحات البيانات والتنبيهات المخصّصة. يمكن أن يكون هذان الجدولان مع طلب دمج للحصول على وفوائدهما.
بشكلٍ تلقائي، يكون وقت انتهاء صلاحية القسم في جدول "الوقت الفعلي" هو 30 يومًا. للاطّلاع على كيفية تعديل هذا الإعداد، يُرجى الاطّلاع على ضبط تاريخ انتهاء صلاحية القسم في مستندات BigQuery.
تفعيل تصدير أحداث البث المباشر على Crashlytics إلى BigQuery
- في وحدة تحكّم Firebase، انتقِل إلى صفحة عمليات الدمج.
- في البطاقة BigQuery، انقر على إدارة.
- ضَع علامة في مربّع الاختيار تضمين البث.
يتيح هذا الإجراء البث لجميع تطبيقاتك المرتبطة.
ما هي الإجراءات التي يمكنك اتّخاذها بشأن البيانات التي تم تصديرها؟
تحتوي عمليات التصدير إلى 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: عدد المستخدمين المتأثّرين بمشكلة عطل، مقسّمًا حسب البلد
رصد فريقك خطأً جسيمًا أثناء طرح إصدار جديد. إِنْتَ تمكنا من استخدام الاستعلام من "العثور على الأعطال الأكثر انتشارًا" مثال أعلاه لتحديد معرّف مشكلة العطل المحدد. يرغب فريقك الآن في مشاهدة في حال انتشار هذا العُطل لدى مستخدمين في بلدان مختلفة حول العالم
لكتابة هذا الاستعلام، سيحتاج فريقك إلى القيام بما يلي:
تفعيل تصدير بيانات Google Analytics إلى BigQuery. اطّلِع على تصدير بيانات المشروع إلى BigQuery.
عدِّل تطبيقك لإرسال معرّف مستخدم إلى كلّ من حزمة تطوير البرامج (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");
اكتب طلب بحث يستخدِم حقل "رقم تعريف المستخدِم" لدمج الأحداث في مجموعة بيانات 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، يمكنك عرض هذه البيانات في صفحة المؤشرات في الوقت الفعلي ضمن نموذج "مركز البيانات". يمكنك استخدام العيّنة كنموذج لإنشاء تقارير وعروض مرئية جديدة بسرعة استنادًا إلى بيانات الأعطال الأوّلية لتطبيقك:
انقر على استخدام نموذج في أعلى يسار الصفحة.
في القائمة المنسدلة مصدر بيانات جديد، اختَر إنشاء مصدر بيانات جديد.
انقر على اختيار في البطاقة BigQuery.
اختَر جدولاً يحتوي على بيانات Crashlytics التي تم تصديرها من خلال اختيار مشاريعي > PROJECT_ID > firebase_crashlytics > TABLE_NAME.
يتوفّر جدول الدفعات دائمًا للاختيار. في حال حذف تم تفعيل عملية تصدير بيانات Crashlytics إلى BigQuery، وبعد ذلك يمكنك يمكنك تحديد جدول الوقت الفعلي بدلاً من ذلك.
ضمن الإعدادات، اضبط مستوى نموذج Crashlytics على تلقائي.
انقر على ربط لإنشاء مصدر البيانات الجديد.
انقر على الإضافة إلى التقرير للعودة إلى نموذج Crashlytics.
أخيرًا، انقر على إنشاء تقرير لإنشاء نسختك من Crashlytics نموذج لوحة البيانات في "مركز البيانات".