داده های Firebase Crashlytics را به BigQuery صادر کنید

می توانید داده های Firebase Crashlytics خود را برای تجزیه و تحلیل بیشتر به BigQuery صادر کنید. BigQuery به شما امکان می‌دهد داده‌ها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آن‌ها را به یک ارائه‌دهنده ابر دیگر صادر کنید و از آن برای تجسم و داشبوردهای سفارشی با Google Data Studio استفاده کنید.

صادرات به BigQuery را فعال کنید

  1. در کنسول Firebase ، به صفحه ادغام بروید.
  2. در کارت BigQuery ، روی پیوند کلیک کنید.
  3. دستورالعمل های روی صفحه را دنبال کنید تا صادرات به BigQuery را فعال کنید.

وقتی صادرات به 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 را فعال می‌کنید، علاوه بر جدول دسته‌ای، یک جدول بیدرنگ نیز خواهید داشت. در اینجا تفاوت هایی وجود دارد که باید بین جداول از آنها آگاه باشید:

میز دسته ای جدول بیدرنگ
  • اطلاعات یک بار در روز صادر می شود.
  • رویدادها قبل از نوشتن دسته ای در BigQuery به طور پایدار ذخیره می شوند.
  • داده ها را می توان تا 30 روز قبل پر کرد .
  • داده ها در زمان واقعی صادر می شوند.
  • هیچ گونه پس‌پری در دسترس نیست.

جدول دسته ای برای تجزیه و تحلیل طولانی مدت و شناسایی روندها در طول زمان ایده آل است، زیرا ما رویدادها را قبل از نوشتن آنها به طور بادوام ذخیره می کنیم و می توان آنها را تا 30 روز روی جدول پر کرد. وقتی داده ها را در جدول بیدرنگ شما می نویسیم، بلافاصله آن را در BigQuery می نویسیم و بنابراین برای داشبوردهای زنده و هشدارهای سفارشی ایده آل است. این دو جدول را می توان با یک کوئری دوخت ترکیب کرد تا از مزایای هر دو بهره مند شود.

به‌طور پیش‌فرض، جدول Realtime زمان انقضای پارتیشن 30 روزه دارد. برای یادگیری نحوه تغییر این، به تنظیم انقضای پارتیشن در مستندات BigQuery مراجعه کنید.

صادرات جریان Crashlytics به BigQuery را فعال کنید

  1. در کنسول Firebase ، به صفحه ادغام بروید.
  2. در کارت BigQuery ، روی مدیریت کلیک کنید.
  3. چک باکس Include streaming را انتخاب کنید.

این عملکرد پخش جریانی را برای همه برنامه‌های پیوند داده شده شما فعال می‌کند.

با داده های صادر شده چه کاری می توانید انجام دهید؟

صادرات به BigQuery حاوی داده‌های خرابی خام از جمله نوع دستگاه، سیستم عامل، استثناها (برنامه‌های Android) یا خطاها (برنامه‌های اپل) و گزارش‌های Crashlytics و همچنین داده‌های دیگر است.

دقیقاً چه داده‌های Crashlytics صادر شده و طرح جدول آن را در ادامه این صفحه مرور کنید.

از قالب Data Studio استفاده کنید

برای فعال کردن داده‌های بی‌درنگ در قالب Data Studio خود، دستورالعمل‌های موجود در Visualizing Crashlytics صادر شده با Data Studio را دنبال کنید.

ایجاد نماها

با استفاده از رابط کاربری BigQuery می توانید پرس و جوها را به نما تبدیل کنید. برای دستورالعمل های دقیق، به ایجاد نماها در مستندات BigQuery مراجعه کنید.

کوئری ها را اجرا کنید

مثال‌های زیر جست‌وجوهایی را نشان می‌دهند که می‌توانید روی داده‌های Crashlytics خود اجرا کنید تا گزارش‌هایی تولید کنید که داده‌های رویداد خرابی را در خلاصه‌های قابل فهم‌تر جمع‌آوری می‌کند. از آنجایی که این نوع گزارش‌ها در داشبورد Crashlytics کنسول Firebase در دسترس نیستند، می‌توانند تجزیه و تحلیل و درک شما از داده‌های خرابی را تکمیل کنند.

مثال 1: خرابی در روز

پس از تلاش برای رفع هر چه بیشتر باگ‌های ممکن، فکر می‌کنید تیم شما بالاخره آماده است تا برنامه جدید اشتراک‌گذاری عکس شما را راه‌اندازی کند. قبل از اینکه این کار را انجام دهید، می‌خواهید تعداد خرابی‌های ماه گذشته در روز را بررسی کنید تا مطمئن شوید که bug-bash برنامه را در طول زمان پایدارتر کرده است.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 خرابی برتر را در برنامه خود پیدا کنید. شما یک پرس و جو تولید می کنید که نقاط مربوط به داده ها را ارائه می دهد.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 ساعت) تجربه کرده‌اند، شناسایی می‌کند.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 تنظیم می‌کنید و هر بار که کاربر به سطح جدیدی می‌رسد، آن را به‌روزرسانی می‌کنید.

سویفت

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

هدف-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

جاوا

Crashlytics.setInt("current_level", 3);

با استفاده از آن کلید در صادرات خود به BigQuery ، سپس می توانید یک پرس و جو بنویسید تا توزیع مقادیر current_level مرتبط با هر رویداد خرابی را گزارش کنید.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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: استخراج شناسه کاربری

شما یک برنامه اندروید در دسترسی اولیه دارید. اکثر کاربران شما آن را دوست دارند، اما سه نفر تعداد غیرعادی خرابی را تجربه کرده اند. برای رسیدن به ته مشکل، یک پرس و جو می نویسید که با استفاده از شناسه کاربری آن ها، تمام رویدادهای خرابی را برای آن کاربران نشان می دهد.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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: همه کاربرانی که با مشکل خرابی خاصی مواجه هستند را پیدا کنید

تیم شما به طور تصادفی یک باگ مهم را برای گروهی از آزمایش‌کنندگان بتا منتشر کرده است. تیم شما توانست از عبارت «یافتن بیشترین خرابی‌ها» در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کند. اکنون تیم شما می‌خواهد برای استخراج لیستی از کاربران برنامه که تحت تأثیر این خرابی قرار گرفته‌اند، پرس و جوی اجرا کند.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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: تعداد کاربرانی که تحت تأثیر یک مشکل خرابی قرار گرفته اند، به تفکیک کشور

تیم شما در طول عرضه نسخه جدید یک اشکال مهم را شناسایی کرده است. می‌توانید از عبارت «یافتن بیشترین خرابی‌ها» در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کنید. تیم شما اکنون می‌خواهد ببیند که آیا این خرابی به کاربران کشورهای مختلف در سراسر جهان سرایت کرده است یا خیر.

برای نوشتن این پرس و جو، تیم شما باید موارد زیر را انجام دهد:

  1. صادرات داده های Google Analytics به BigQuery را فعال کنید. صادرات داده های پروژه به BigQuery را ببینید.

  2. برنامه خود را به‌روزرسانی کنید تا شناسه کاربری را هم به Google Analytics SDK و هم در Crashlytics SDK ارسال کنید.

    سویفت

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    هدف-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    جاوا

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. درخواستی بنویسید که از فیلد شناسه کاربر برای پیوستن به رویدادهای مجموعه داده Google Analytics با خرابی در مجموعه داده Crashlytics استفاده کند.

    در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 موضوع برتر تا کنون امروز

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 برای حذف رویدادهای رایج از دو جدول استفاده کنید.

در اینجا یک نمونه پرس و جو برای یک برنامه اندروید آمده است. برای یک برنامه iOS، از ID بسته و 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 STRING پلت فرم برنامه همانطور که در پروژه Firebase ثبت شده است (مقادیر معتبر: IOS یا ANDROID )
bundle_identifier STRING شناسه منحصر به فرد برنامه همانطور که در پروژه Firebase ثبت شده است (به عنوان مثال، com.google.gmail )
برای برنامه های پلتفرم اپل، این شناسه بسته نرم افزاری است.
برای برنامه های اندروید، این نام بسته برنامه است.
event_id STRING شناسه منحصر به فرد رویداد
is_fatal بولین این که آیا برنامه از کار افتاده است
error_type STRING نوع خطای رویداد (به عنوان مثال، FATAL ، NON_FATAL ، ANR ، و غیره)
issue_id STRING موضوع مرتبط با رویداد
variant_id STRING نوع مسئله مرتبط با این رویداد
توجه داشته باشید که همه رویدادها دارای یک نوع مشکل مرتبط نیستند.
event_timestamp TIMESTAMP زمانی که واقعه رخ داد
device ضبط دستگاهی که رویداد در آن رخ داده است
device.manufacturer STRING سازنده دستگاه
device.model STRING مدل دستگاه
device.architecture STRING به عنوان مثال، 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 STRING نسخه سیستم عامل روی دستگاه
operating_system.name STRING نام سیستم عامل روی دستگاه
operating_system.modification_state STRING این که آیا دستگاه تغییر کرده است یا نه (برای مثال، یک برنامه جیلبریک MODIFIED و یک برنامه روت شده UNMODIFIED است)
operating_system.type STRING (فقط برنامه های اپل) نوع سیستم عامل در حال اجرا بر روی دستگاه (به عنوان مثال، IOS ، MACOS ، و غیره)
operating_system.device_type STRING نوع دستگاه (به عنوان مثال، MOBILE ، TABLET ، TV و غیره)؛ همچنین به عنوان "دسته دستگاه" شناخته می شود
application ضبط برنامه ای که رویداد را ایجاد کرد
application.build_version STRING نسخه ساخت برنامه
application.display_version STRING
user ضبط (اختیاری) اطلاعات جمع آوری شده در مورد کاربر برنامه
user.name STRING (اختیاری) نام کاربر
user.email STRING (اختیاری) آدرس ایمیل کاربر
user.id STRING (اختیاری) شناسه مخصوص برنامه مرتبط با کاربر
custom_keys ضبط مکرر جفت های کلید-مقدار تعریف شده توسط توسعه دهنده
custom_keys.key STRING یک کلید تعریف شده توسط توسعه دهنده
custom_keys.value STRING یک مقدار تعریف شده توسط توسعه دهنده
installation_uuid STRING شناسه ای که نصب یک برنامه و دستگاه منحصر به فرد را مشخص می کند
crashlytics_sdk_versions STRING نسخه Crashlytics SDK که رویداد را ایجاد کرد
app_orientation STRING به عنوان مثال، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN ، و غیره.
device_orientation STRING به عنوان مثال، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN ، و غیره.
process_state STRING BACKGROUND یا FOREGROUND
logs ضبط مکرر پیام‌های گزارش مهر زمانی تولید شده توسط Crashlytics Logger، در صورت فعال بودن
logs.timestamp TIMESTAMP زمانی که لاگ ساخته شد
logs.message STRING پیام ثبت شده
breadcrumbs ضبط مکرر در صورت فعال بودن، نان خرده‌های Google Analytics دارای مهر زمانی است
breadcrumbs.timestamp TIMESTAMP مهر زمانی مرتبط با پودر سوخاری
breadcrumbs.name STRING نام مرتبط با آرد سوخاری
breadcrumbs.params ضبط مکرر پارامترهای مرتبط با پودر سوخاری
breadcrumbs.params.key STRING یک کلید پارامتر مرتبط با پودر سوخاری
breadcrumbs.params.value STRING یک مقدار پارامتر مرتبط با پودر سوخاری
blame_frame ضبط قاب به عنوان علت اصلی خرابی یا خطا شناسایی شده است
blame_frame.line INT64 شماره خط فایل قاب
blame_frame.file STRING نام فایل فریم
blame_frame.symbol STRING نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد
blame_frame.offset INT64 بایت به تصویر باینری که حاوی کد است تغییر می کند
برای استثناهای جاوا تنظیم نشده است
blame_frame.address INT64 آدرس موجود در تصویر باینری که حاوی کد است
برای فریم های جاوا تنظیم نشده است
blame_frame.library STRING نام نمایشی کتابخانه که شامل قاب است
blame_frame.owner STRING به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM
blame_frame.blamed بولین آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است
exceptions ضبط مکرر (فقط اندروید) استثناهایی که در طول این رویداد رخ داده است. استثناهای تودرتو به ترتیب زمانی معکوس ارائه می شوند، به این معنی که آخرین رکورد اولین استثنا پرتاب شده است.
exceptions.type STRING نوع استثنا (به عنوان مثال، java.lang.IllegalStateException)
exceptions.exception_message STRING یک پیام مرتبط با استثنا
exceptions.nested بولین درست برای همه به جز آخرین مورد استثنا (به معنی اولین رکورد)
exceptions.title STRING عنوان تاپیک
exceptions.subtitle STRING زیرنویس تاپیک
exceptions.blamed بولیان درست است اگر Crashlytics تشخیص دهد که استثنا مسئول خطا یا خرابی است
exceptions.frames ضبط مکرر فریم های مرتبط با استثنا
exceptions.frames.line INT64 شماره خط فایل قاب
exceptions.frames.file STRING نام فایل فریم
exceptions.frames.symbol STRING نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد
exceptions.frames.offset INT64 بایت به تصویر باینری که حاوی کد است تغییر می کند
برای استثناهای جاوا تنظیم نشده است
exceptions.frames.address INT64 آدرس موجود در تصویر باینری که حاوی کد است
برای فریم های جاوا تنظیم نشده است
exceptions.frames.library STRING نام نمایشی کتابخانه که شامل قاب است
exceptions.frames.owner STRING به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM
exceptions.frames.blamed بولیان آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است
error ضبط مکرر (فقط برنامه های اپل) خطاهای غیر کشنده
error.queue_name STRING صفی که تاپیک در حال اجرا بود
error.code INT64 کد خطا مرتبط با خطای NSE ثبت شده سفارشی برنامه
error.title STRING عنوان تاپیک
error.subtitle STRING زیرنویس تاپیک
error.blamed بولیان آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر
error.frames ضبط مکرر فریم های stacktrace
error.frames.line INT64 شماره خط فایل قاب
error.frames.file STRING نام فایل فریم
error.frames.symbol STRING نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد
error.frames.offset INT64 بایت به تصویر باینری که حاوی کد است تغییر می کند
error.frames.address INT64 آدرس موجود در تصویر باینری که حاوی کد است
error.frames.library STRING نام نمایشی کتابخانه که شامل قاب است
error.frames.owner STRING به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM
error.frames.blamed بولین آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر
threads ضبط مکرر موضوعات موجود در زمان رویداد
threads.crashed بولین این که آیا نخ خراب شده است
threads.thread_name STRING نام تاپیک
threads.queue_name STRING (فقط برنامه های اپل) صفی که رشته در حال اجرا بود
threads.signal_name STRING نام سیگنالی که باعث از کار افتادن برنامه شد، فقط در رشته‌های اصلی خراب شده وجود دارد
threads.signal_code STRING کد سیگنالی که باعث از کار افتادن برنامه شد. فقط در رشته های بومی خراب شده وجود دارد
threads.crash_address INT64 آدرس سیگنالی که باعث از کار افتادن برنامه شد. فقط در رشته های بومی خراب شده وجود دارد
threads.code INT64 (فقط برنامه های اپل) کد خطای خطای NSE ثبت شده سفارشی برنامه
threads.title STRING عنوان تاپیک
threads.subtitle STRING زیرنویس تاپیک
threads.blamed بولیان آیا Crashlytics تشخیص داده است که این فریم دلیل خرابی یا خطا است
threads.frames ضبط مکرر قاب های نخ
threads.frames.line INT64 شماره خط فایل قاب
threads.frames.file STRING نام فایل فریم
threads.frames.symbol STRING نماد هیدراته یا نماد خام در صورتی که غیر قابل آبرسانی باشد
threads.frames.offset INT64 بایت به تصویر باینری که حاوی کد است تغییر می کند
threads.frames.address INT64 آدرس موجود در تصویر باینری که حاوی کد است
threads.frames.library STRING نام نمایشی کتابخانه که شامل قاب است
threads.frames.owner STRING به عنوان مثال، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM ، یا SYSTEM
threads.frames.blamed بولین آیا Crashlytics تشخیص داده است که این فریم دلیل خطا است یا خیر
unity_metadata.unity_version STRING نسخه Unity در حال اجرا بر روی این دستگاه
unity_metadata.debug_build بولین اگر این یک ساخت اشکال زدایی است
unity_metadata.processor_type STRING نوع پردازنده
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 STRING نام دستگاه گرافیکی
unity_metadata.graphics_device_vendor STRING فروشنده دستگاه گرافیکی
unity_metadata.graphics_device_version STRING نسخه دستگاه گرافیکی
unity_metadata.graphics_device_type STRING نوع دستگاه گرافیکی
unity_metadata.graphics_shader_level INT64 سطح سایه زن گرافیکی
unity_metadata.graphics_render_target_count INT64 تعداد اهداف رندر گرافیکی
unity_metadata.graphics_copy_texture_support STRING پشتیبانی از کپی بافت گرافیکی همانطور که در Unity API تعریف شده است
unity_metadata.graphics_max_texture_size INT64 حداکثر اندازه اختصاص داده شده به رندر بافت
unity_metadata.screen_size_px STRING اندازه صفحه نمایش بر حسب پیکسل، فرمت شده به صورت عرض x ارتفاع
unity_metadata.screen_resolution_dpi STRING DPI صفحه به عنوان یک عدد ممیز شناور
unity_metadata.screen_refresh_rate_hz INT64 نرخ تازه سازی صفحه نمایش بر حسب هرتز

داده های Crashlytics صادر شده را با Data Studio تجسم کنید

Google Data Studio مجموعه داده‌های Crashlytics شما را در BigQuery به گزارش‌هایی تبدیل می‌کند که خواندن آسان‌تر، اشتراک‌گذاری آسان‌تر و کاملاً قابل تنظیم هستند.

برای کسب اطلاعات بیشتر در مورد استفاده از Data Studio، راهنمای شروع سریع Data Studio را امتحان کنید، به Data Studio خوش آمدید .

از یک الگوی گزارش Crashlytics استفاده کنید

Data Studio یک گزارش نمونه برای Crashlytics دارد که شامل مجموعه ای جامع از ابعاد و معیارهای طرحواره Crashlytics BigQuery صادر شده است. اگر صادرات جریان Crashlytics به BigQuery را فعال کرده‌اید، می‌توانید آن داده‌ها را در صفحه روندهای Realtime الگوی Data Studio مشاهده کنید. می‌توانید از نمونه به عنوان الگو برای ایجاد سریع گزارش‌ها و تجسم‌های جدید بر اساس داده‌های خرابی خام برنامه خود استفاده کنید. :

  1. قالب داشبورد Crashlytics Data Studio را باز کنید.

  2. روی Use Template در گوشه سمت راست بالا کلیک کنید.

  3. در منوی کشویی New Data Source ، Create New Data Source را انتخاب کنید.

  4. در کارت BigQuery روی Select کلیک کنید.

  5. با انتخاب پروژه‌های من > PROJECT_ID > firebase_crashlytics > TABLE_NAME ، جدولی حاوی داده‌های Crashlytics صادر شده را انتخاب کنید.

    جدول دسته ای شما همیشه برای انتخاب در دسترس است. اگر صادرات جریان Crashlytics به BigQuery فعال باشد، می‌توانید به جای آن جدول بیدرنگ خود را انتخاب کنید.

  6. در قسمت پیکربندی ، سطح الگوی Crashlytics را روی پیش‌فرض تنظیم کنید.

  7. برای ایجاد منبع داده جدید روی Connect کلیک کنید.

  8. برای بازگشت به الگوی Crashlytics روی افزودن به گزارش کلیک کنید.

  9. در نهایت روی Create Report کلیک کنید تا یک کپی از الگوی Crashlytics Data Studio Dashboard ایجاد شود.