يمكنك تصدير بيانات Crashlytics إلى BigQuery لإجراء مزيد من التحليل. تسمح لك أداة BigQuery بتحليل البيانات باستخدام BigQuery SQL وتصديرها إلى مقدّم خدمات سحابية آخر واستخدامها للتمثيل البصري ولوحات البيانات المخصّصة باستخدام "مركز البيانات من Google".
تفعيل BigQuery Export
- انتقِل إلى صفحة عمليات الدمج في وحدة تحكُّم Firebase.
- في بطاقة BigQuery، انقر على ربط.
- اتبع التعليمات التي تظهر على الشاشة لتفعيل 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، سيكون لديك جدول في الوقت الفعلي بالإضافة إلى جدول البيانات المجمّعة. فيما يلي الاختلافات التي يجب أن تكون على دراية بها بين الجداول:
جدول البيانات المجمّعة | جدول الوقت الفعلي |
---|---|
|
|
يُعد الجدول المجمّع مثاليًا للتحليل طويل المدى وتحديد الاتجاهات بمرور الوقت لأننا نخزّن الأحداث بشكل دائم قبل كتابتها، ويمكن إضافتها إلى الجدول لمدة تصل إلى 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 أعلاه لتحديد معرّف مشكلة التعطل المحدد. يود الفريق الآن معرفة ما إذا كان هذا العطل قد انتشر على المستخدمين في بلدان مختلفة حول العالم.
لكتابة هذا الاستعلام، سيحتاج الفريق إلى:
تفعيل عمليات تصدير BigQuery لخدمة "إحصاءات Google" راجِع تصدير بيانات المشروع إلى BigQuery.
حدِّث التطبيق لتمرير رقم تعريف المستخدم في كل من حزمة تطوير البرامج (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");
اكتب طلب بحث يستخدم حقل 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، يمكنك عرض تلك البيانات على صفحة المؤشرات في الوقت الفعلي لنموذج "مركز البيانات". ويمكنك استخدام النموذج كنموذج لإنشاء تقارير وعروض مرئية جديدة بسرعة استنادًا إلى بيانات الأعطال الأولية لتطبيقك:
- افتح نموذج لوحة بيانات Crashlytics Data Studio.
- انقر على استخدام النموذج في أعلى يسار الصفحة.
- في القائمة المنسدلة مصدر بيانات جديد، اختَر إنشاء مصدر بيانات جديد.
- انقر على اختيار في بطاقة BigQuery.
- اختَر جدولاً يحتوي على بيانات Crashlytics التي تم تصديرها عن طريق اختيار مشاريعي > [your-project-name] > firebase_crashlytics > [your-table-name]. يكون جدول الدُفعات متاحًا دائمًا للاختيار، فإذا تم تفعيل تصدير بث بيانات Chrome في Crashlytics، يمكنك اختيار جدول الوقت الفعلي بدلاً من ذلك.
- ضمن الإعدادات، اضبط مستوى نموذج Crashlytics على تلقائي.
- انقر على ربط لإنشاء مصدر البيانات الجديد.
- انقر على إضافة إلى التقرير للعودة إلى نموذج Crashlytics.
- أخيرًا، انقر على إنشاء تقرير لإنشاء نسختك من نموذج لوحة بيانات مركز البيانات في Crashlytics.