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

يمكنك تصدير بيانات Crashlytics الخاصة بك إلى BigQuery لمزيد من التحليل. يتيح لك BigQuery تحليل البيانات باستخدام BigQuery SQL، وتصديرها إلى موفر سحابي آخر، واستخدامها للتصور ولوحات المعلومات المخصصة مع Google Data Studio.

تمكين تصدير BigQuery

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

عند ربط مشروعك بـ BigQuery:

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

لإلغاء تنشيط تصدير BigQuery، قم بإلغاء ربط مشروعك في وحدة تحكم 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.

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

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

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

بشكل افتراضي، يحتوي جدول الوقت الفعلي على وقت انتهاء صلاحية القسم وهو 30 يومًا. لمعرفة كيفية تعديل ذلك، راجع تحديث انتهاء صلاحية القسم .

تمكين دفق Crashlytics BigQuery

لتمكين الدفق، انتقل إلى قسم Crashlytics في صفحة عمليات تكامل BigQuery وحدد خانة الاختيار تضمين الدفق .

قالب استوديو البيانات

لتمكين بيانات الوقت الفعلي في قالب Data Studio، اتبع الإرشادات الموجودة في تصور بيانات Crashlytics المصدرة باستخدام Data Studio .

الآراء

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

ماذا يمكنك أن تفعل بالبيانات المصدرة؟

تحتوي عمليات تصدير 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 ، وتحديثه في كل مرة يصل فيها المستخدم إلى مستوى جديد.

ج موضوعية

CrashlyticsKit setIntValue:3 forKey:@"current_level";

سويفت

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

جافا

Crashlytics.setInt("current_level", 3);

باستخدام هذا المفتاح في تصدير BigQuery، يكتبون بعد ذلك استعلامًا للإبلاغ عن توزيع قيم 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 Analytics. راجع تصدير بيانات المشروع إلى BigQuery .

  2. قم بتحديث تطبيقهم لتمرير معرف المستخدم إلى كل من Google Analytics SDK وCrashlytics SDK.

    ج موضوعية
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    سويفت
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    جافا
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. اكتب استعلامًا يستخدم حقل معرف المستخدم للانضمام إلى الأحداث في مجموعة بيانات Google Analytics BigQuery مع حدوث أعطال في مجموعة بيانات 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)، بما في ذلك الأحداث لمدة تصل إلى يومين قبل الارتباط، مع خيار إعادة التعبئة لمدة تصل إلى تسعين يومًا.

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

بدون آثار المكدس

الأعمدة موجودة في صفوف تمثل الأحداث بدون تتبعات المكدس.

اسم الحقل نوع البيانات وصف
منصة خيط تطبيقات أبل أو أندرويد
package_identifier خيط معرف الحزمة، على سبيل المثال com.google.gmail
Event_id خيط معرف فريد لهذا الحدث
is_fatal منطقية ما إذا كان التطبيق قد تعطل
error_type خيط نوع الخطأ في الحدث (FATAL، NON_FATAL، ANR)
معرف_المشكلة خيط المشكلة المرتبطة بالحدث
Variety_id خيط متغير المشكلة المرتبط بهذا الحدث
لاحظ أنه ليست كل الأحداث لها متغير مشكلة مرتبط بها.
events_timestamp الطابع الزمني عندما وقع الحدث
جهاز سِجِلّ الجهاز الذي وقع عليه الحدث
الشركة المصنعة للجهاز خيط الشركة المصنعة للجهاز
طراز الجهاز خيط طراز الجهاز
جهاز.هندسة معمارية خيط X86_32 أو X86_64 أو ARMV7 أو ARM64 أو ARMV7S أو ARMV7K
ذاكرة سِجِلّ حالة ذاكرة الجهاز
الذاكرة المستخدمة إنت64 بايت من الذاكرة المستخدمة
Memory.free إنت64 بايت من الذاكرة المتبقية
تخزين سِجِلّ التخزين الدائم للجهاز
تخزين.مستعمل إنت64 وحدات البايت من التخزين المستخدمة
تخزين.مجاني إنت64 بايت من مساحة التخزين المتبقية
نظام التشغيل سِجِلّ تفاصيل نظام التشغيل الموجود على الجهاز
Operating_system.display_version خيط إصدار نظام التشغيل الموجود على الجهاز
Operating_system.name خيط اسم نظام التشغيل الموجود على الجهاز
Operating_system.modification_state خيط ما إذا كان الجهاز قد تم تعديله، على سبيل المثال كسر الحماية/تجذير (معدل أو غير معدل)
Operating_system.type خيط نوع نظام التشغيل الذي يعمل على الجهاز (على سبيل المثال، IOS، MACOS)؛ متاح فقط لتطبيقات منصات Apple
Operating_system.device_type خيط نوع الجهاز (على سبيل المثال، هاتف محمول، جهاز لوحي، تلفزيون، وما إلى ذلك)؛ تُعرف أيضًا باسم "فئة الجهاز"
طلب سِجِلّ التطبيق الذي أنشأ الحدث
application.build_version خيط نسخة بناء التطبيق
application.display_version خيط
مستخدم سِجِلّ اختياري: المعلومات التي تم جمعها عن مستخدم التطبيق
اسم المستخدم خيط اختياري: اسم المستخدم
البريد الالكتروني للمستخدم خيط اختياري: عنوان البريد الإلكتروني للمستخدم
معرف المستخدم خيط اختياري: معرف خاص بالتطبيق مرتبط بالمستخدم
custom_keys سجل متكرر أزواج القيمة الأساسية المعرفة من قبل المطور
custom_keys.key خيط مفتاح محدد من قبل المطور
custom_keys.value خيط قيمة محددة من قبل المطور
install_uuid خيط معرف يحدد التطبيق الفريد وتثبيت الجهاز
Crashlytics_sdk_versions خيط إصدار Crashlytics SDK الذي أنشأ الحدث
app_orientation خيط PORTRAIT، أو LANDSCAPE، أو FACE_UP، أو FACE_DOWN
Device_orientation خيط PORTRAIT، أو LANDSCAPE، أو FACE_UP، أو FACE_DOWN
Process_state خيط الخلفية أو المقدمة
السجلات سجل متكرر رسائل السجل ذات الطابع الزمني التي تم إنشاؤها بواسطة مسجل Crashlytics، إذا تم تمكينها
logs.timestamp الطابع الزمني عندما تم إنشاء السجل
logs.message خيط الرسالة المسجلة
فتات الخبز سجل متكرر مسارات تنقل Google Analytics ذات الطابع الزمني، إذا تم تمكينها
فتات الخبز.الطابع الزمني الطابع الزمني الطابع الزمني المرتبط بمسار التنقل
فتات الخبز.اسم خيط الاسم المرتبط بمسار التنقل
فتات الخبز.params سجل متكرر المعلمات المرتبطة بمسار التنقل
فتات الخبز.params.key خيط مفتاح معلمة مرتبط بمسار التنقل
فتات الخبز.params.value خيط قيمة المعلمة المرتبطة بمسار التنقل
Blam_frame سِجِلّ الإطار الذي تم تحديده على أنه السبب الجذري للعطل أو الخطأ
Blam_frame.line إنت64 رقم السطر لملف الإطار
Blam_frame.file خيط اسم ملف الإطار
Blam_frame.symbol خيط الرمز المائي، أو الرمز الخام إذا كان غير قابل للترطيب
Blam_frame.offset إنت64 إزاحة البايت في الصورة الثنائية التي تحتوي على الكود، غير محددة لاستثناءات Java
Blam_frame.address إنت64 العنوان الموجود في الصورة الثنائية والذي يحتوي على الكود، غير محدد لإطارات Java
إلقاء اللوم_frame.library خيط اسم العرض للمكتبة التي تتضمن الإطار
إلقاء اللوم_frame.owner خيط المطور، البائع، وقت التشغيل، النظام الأساسي، أو النظام
إلقاء اللوم_frame.blamed منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب العطل أو الخطأ
استثناءات سجل متكرر Android فقط: الاستثناءات التي حدثت أثناء هذا الحدث. يتم عرض الاستثناءات المتداخلة بترتيب زمني عكسي (اقرأ: السجل الأخير هو الاستثناء الأول الذي تم طرحه)
Exceptions.type خيط نوع الاستثناء، على سبيل المثال، java.lang.IllegalStateException
Exceptions.exception_message خيط رسالة مقترنة بالاستثناء
Exceptions.nested منطقية صحيح للجميع باستثناء الاستثناء الأخير (أي السجل الأول)
Exceptions.title خيط عنوان الموضوع
استثناءات.العنوان الفرعي خيط العنوان الفرعي للموضوع
Exceptions.blamed منطقية صحيح إذا حددت Crashlytics أن الاستثناء هو المسؤول عن الخطأ أو التعطل
Exceptions.frames سجل متكرر الإطارات المرتبطة بالاستثناء
Exceptions.frames.line إنت64 رقم السطر لملف الإطار
Exceptions.frames.file خيط اسم ملف الإطار
Exceptions.frames.symbol خيط الرمز المائي، أو الرمز الخام إذا كان غير قابل للترطيب
Exceptions.frames.offset إنت64 إزاحة البايت في الصورة الثنائية التي تحتوي على الكود، غير محددة لاستثناءات Java
Exceptions.frames.address إنت64 العنوان الموجود في الصورة الثنائية والذي يحتوي على الكود، غير محدد لإطارات Java
Exceptions.frames.library خيط اسم العرض للمكتبة التي تتضمن الإطار
Exceptions.frames.owner خيط المطور، البائع، وقت التشغيل، النظام الأساسي، أو النظام
Exceptions.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب العطل أو الخطأ
خطأ سجل متكرر تطبيقات Apple فقط: أخطاء غير فادحة
error.queue_name خيط قائمة الانتظار التي كان يعمل عليها الخيط
خطا بالكود إنت64 رمز الخطأ المرتبط بخطأ NSError المخصص للتطبيق
خطأ.العنوان خيط عنوان الموضوع
خطأ.العنوان الفرعي خيط العنوان الفرعي للموضوع
خطأ.إلقاء اللوم منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب الخطأ
خطأ. إطارات سجل متكرر إطارات المكدس
error.frames.line إنت64 رقم السطر لملف الإطار
error.frames.file خيط اسم ملف الإطار
خطأ.إطارات.رمز خيط الرمز المائي، أو الرمز الخام إذا كان غير قابل للترطيب
error.frames.offset إنت64 إزاحة البايت في الصورة الثنائية التي تحتوي على الكود
error.frames.address إنت64 العنوان الموجود في الصورة الثنائية التي تحتوي على الكود
error.frames.library خيط اسم العرض للمكتبة التي تتضمن الإطار
error.frames.owner خيط المطور، البائع، وقت التشغيل، النظام الأساسي، أو النظام
error.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب الخطأ
الخيوط سجل متكرر المواضيع الموجودة في وقت الحدث
Threads.crashed منطقية ما إذا كان الخيط قد تحطم
threads.thread_name خيط اسم الخيط
threads.queue_name خيط تطبيقات Apple فقط: قائمة الانتظار التي كان يعمل عليها مؤشر الترابط
threads.signal_name خيط اسم الإشارة التي تسببت في تعطل التطبيق، موجود فقط في سلاسل الرسائل الأصلية المعطلة
threads.signal_code خيط رمز الإشارة التي تسببت في تعطل التطبيق؛ موجود فقط على المواضيع الأصلية المحطمة
threads.crash_address إنت64 عنوان الإشارة التي تسببت في تعطل التطبيق؛ موجود فقط على المواضيع الأصلية المحطمة
Threads.code إنت64 تطبيقات Apple فقط: رمز الخطأ الخاص بخطأ NSError المخصص للتطبيق
Threads.title خيط عنوان الموضوع
المواضيع.العنوان الفرعي خيط العنوان الفرعي للموضوع
Threads.blamed منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب العطل أو الخطأ
Threads.frames سجل متكرر إطارات الخيط
threads.frames.line إنت64 رقم السطر لملف الإطار
Threads.frames.file خيط اسم ملف الإطار
Threads.frames.symbol خيط الرمز المائي، أو الرمز الخام إذا كان غير قابل للترطيب
threads.frames.offset إنت64 إزاحة البايت في الصورة الثنائية التي تحتوي على الكود
Threads.frames.address إنت64 العنوان الموجود في الصورة الثنائية التي تحتوي على الكود
threads.frames.library خيط اسم العرض للمكتبة التي تتضمن الإطار
threads.frames.owner خيط المطور، البائع، وقت التشغيل، النظام الأساسي، أو النظام
Threads.frames.blamed منطقية ما إذا كان تحليل Crashlytics قد حدد أن هذا الإطار هو سبب الخطأ
Unity_metadata.unity_version خيط إصدار Unity الذي يعمل على هذا الجهاز
Unity_metadata.debug_build منطقية إذا كان هذا بناء تصحيح
Unity_metadata.processor_type خيط نوع المعالج
Unity_metadata.processor_count إنت64 عدد المعالجات (النوى)
Unity_metadata.processor_frequency_mhz إنت64 تردد المعالج (المعالجات) بالميجاهرتز
Unity_metadata.system_memory_size_mb إنت64 حجم ذاكرة النظام بالميجابايت
Unity_metadata.graphics_memory_size_mb إنت64 ذاكرة الرسومات بالميجابايت
Unity_metadata.graphics_device_id إنت64 معرف جهاز الرسومات
Unity_metadata.graphics_device_vendor_id إنت64 معرف بائع معالج الرسومات
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 إنت64 مستوى تظليل الرسومات
Unity_metadata.graphics_render_target_count إنت64 عدد أهداف العرض الرسومية
Unity_metadata.graphics_copy_texture_support خيط دعم نسخ نسيج الرسومات كما هو محدد في Unity API
Unity_metadata.graphics_max_texture_size إنت64 الحد الأقصى للحجم المخصص لتقديم الملمس
Unity_metadata.screen_size_px خيط حجم الشاشة بالبكسل، بتنسيق العرض × الارتفاع
Unity_metadata.screen_resolution_dpi خيط DPI للشاشة كرقم النقطة العائمة
Unity_metadata.screen_refresh_rate_hz إنت64 معدل تحديث الشاشة بالهرتز

تصور بيانات Crashlytics المصدرة باستخدام Data Studio

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

لمعرفة المزيد حول استخدام Data Studio، جرّب دليل البدء السريع لـ Data Studio، مرحبًا بك في Data Studio .

استخدام قالب تقرير Crashlytics

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

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