داده های 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 را فعال کنید

با BigQueryStreaming می‌توانید داده‌های Crashlytics خود را به‌صورت هم‌زمان پخش کنید. می‌توانید از آن برای هر هدفی که به داده‌های زنده نیاز دارد، استفاده کنید، مانند ارائه اطلاعات در داشبورد زنده، تماشای پخش زنده، یا نظارت بر مشکلات برنامه‌ای که هشدارها و گردش‌های کاری سفارشی را ایجاد می‌کنند.

صادر کردن جریان Crashlytics BigQuery برای جعبه ایمنی BigQuery در دسترس نیست.

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

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

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

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

پخش جریانی Crashlytics BigQuery را فعال کنید

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

قالب Data Studio

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

بازدیدها

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

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

صادرات BigQuery حاوی داده‌های خرابی خام از جمله نوع دستگاه، سیستم عامل، استثنائات (برنامه‌های Android) یا خطاها (برنامه‌های اپل) و گزارش‌های 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 دستگاه برتر خراب

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

هدف-C

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 ارسال کنید.

    هدف-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    سریع
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    جاوا
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. درخواستی بنویسید که از فیلد شناسه کاربر برای پیوستن به رویدادهای مجموعه داده‌های Google Analytics BigQuery با خرابی‌ها در مجموعه داده‌های BigQuery Crashlytics استفاده کند:

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

بدون رد پشته

ستون‌هایی در ردیف‌هایی وجود دارند که رویدادها را بدون ردپای پشته نشان می‌دهند.

نام زمینه نوع داده شرح
سکو STRING برنامه های اپل یا اندروید
bundle_identifier STRING شناسه بسته، به عنوان مثال com.google.gmail
رویداد_id STRING یک شناسه منحصر به فرد برای رویداد
کشنده است بولین این که آیا برنامه از کار افتاده است
نوع_خطا STRING نوع خطای رویداد (FATAL، NON_FATAL، ANR)
issue_id STRING موضوع مرتبط با رویداد
variant_id STRING نوع مسئله مرتبط با این رویداد
توجه داشته باشید که همه رویدادها دارای یک نوع مشکل مرتبط نیستند.
رویداد_زمان مهر TIMESTAMP زمانی که واقعه رخ داد
دستگاه رکورد دستگاهی که رویداد در آن رخ داده است
دستگاه.سازنده STRING سازنده دستگاه
دستگاه.مدل STRING مدل دستگاه
دستگاه.معماری STRING X86_32، X86_64، ARMV7، ARM64، ARMV7S، یا ARMV7K
حافظه رکورد وضعیت حافظه دستگاه
حافظه استفاده می شود INT64 بایت حافظه استفاده شده
حافظه.رایگان INT64 بایت حافظه باقی مانده است
ذخیره سازی رکورد ذخیره سازی دائمی دستگاه
ذخیره سازی.استفاده شده INT64 بایت های ذخیره سازی استفاده شده
ذخیره سازی.رایگان INT64 بایت های ذخیره سازی باقی مانده است
سیستم عامل رکورد جزئیات سیستم عامل روی دستگاه
operator_system.display_version STRING نسخه سیستم عامل روی دستگاه
operator_system.name STRING نام سیستم عامل روی دستگاه
Operating_system.Modification_state STRING این که آیا دستگاه اصلاح شده باشد، مثلاً جیلبریک/روت شده باشد (تغییر شده یا UNMODIFIED)
عامل_سیستم.نوع STRING نوع سیستم عامل در حال اجرا بر روی دستگاه (به عنوان مثال، IOS، MACOS)؛ فقط برای برنامه های پلتفرم اپل در دسترس است
operator_system.device_type STRING نوع دستگاه (به عنوان مثال، موبایل، تبلت، تلویزیون و غیره)؛ همچنین به عنوان "دسته دستگاه" شناخته می شود
کاربرد رکورد برنامه ای که رویداد را ایجاد کرد
application.build_version STRING نسخه ساخت برنامه
application.display_version STRING
کاربر رکورد اختیاری: اطلاعات جمع آوری شده در مورد کاربر برنامه
نام کاربری STRING اختیاری: نام کاربر
user.email STRING اختیاری: آدرس ایمیل کاربر
شناسه کاربر STRING اختیاری: شناسه مخصوص برنامه مرتبط با کاربر
کلیدهای سفارشی ضبط مکرر جفت های کلید-مقدار تعریف شده توسط توسعه دهنده
کلیدهای سفارشی STRING یک کلید تعریف شده توسط توسعه دهنده
Custom_keys.value STRING یک مقدار تعریف شده توسط توسعه دهنده
install_uuid STRING شناسه ای که نصب برنامه و دستگاه منحصر به فرد را مشخص می کند
crashlytics_sdk_versions STRING نسخه Crashlytics SDK که رویداد را ایجاد کرد
برنامه_گرا STRING PORTRAIT، LANDSCAPE، FACE_UP، یا FACE_DOWN
دستگاه_گرا STRING PORTRAIT، LANDSCAPE، FACE_UP، یا FACE_DOWN
process_state STRING پس زمینه یا FOREGROUND
سیاهههای مربوط ضبط مکرر پیام‌های گزارش مهر زمانی تولید شده توسط Crashlytics Logger، در صورت فعال بودن
logs.timestamp TIMESTAMP زمانی که لاگ ساخته شد
logs.message STRING پیام ثبت شده
پودرهای سوخاری ضبط مکرر در صورت فعال بودن، نان خرده‌های Google Analytics دارای مهر زمانی است
پودر سوخاری.زمان مهر TIMESTAMP مهر زمانی مرتبط با پودر سوخاری
پودر سوخاری.نام STRING نام مرتبط با آرد سوخاری
پودر سوخاری.پارام ضبط مکرر پارامترهای مرتبط با پودر سوخاری
پودر سوخاری.params.key STRING یک کلید پارامتر مرتبط با پودر سوخاری
پودر سوخاری.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 توسعه دهنده، فروشنده، زمان اجرا، پلت فرم، یا سیستم
سرزنش_قاب.سرزنش بولین آیا تجزیه و تحلیل Crashlytics مشخص کرده است که این فریم دلیل خرابی یا خطا است
استثناها ضبط مکرر فقط Android: استثناهایی که در طول این رویداد رخ داده است. استثناهای تودرتو به ترتیب زمانی معکوس ارائه می شوند (بخوانید: آخرین رکورد اولین استثنا پرتاب شده است)
استثناها.نوع STRING نوع استثنا، به عنوان مثال java.lang.IllegalStateException
استثناها.exception_message STRING یک پیام مرتبط با استثنا
استثناها.تودرتو بولین درست برای همه به جز آخرین مورد استثنا (یعنی اولین رکورد)
استثناها. عنوان STRING عنوان تاپیک
استثناها.زیرنویس STRING زیرنویس تاپیک
استثناها.مقصر بولین درست است اگر Crashlytics تشخیص دهد که استثنا مسئول خطا یا خرابی است
استثناها.قاب ها ضبط مکرر فریم های مرتبط با استثنا
Exceptions.frames.line INT64 شماره خط فایل قاب
Exceptions.frames.file STRING نام فایل فریم
استثناها.قاب.نماد STRING نماد هیدراته یا نماد خام در صورتی که غیرقابل آبرسانی باشد
استثناها.فریم ها.اوفست INT64 بایت در تصویر باینری که حاوی کد است، برای استثناهای جاوا تنظیم نشده است
Exceptions.frames.address INT64 آدرس موجود در تصویر باینری که حاوی کد است، برای فریم های جاوا تنظیم نشده است
استثناها.قاب ها.کتابخانه STRING نام نمایشی کتابخانه که شامل قاب است
استثناها.قاب.مالک STRING توسعه دهنده، فروشنده، زمان اجرا، پلت فرم، یا سیستم
استثناها.قاب ها.مقصر بولین آیا تجزیه و تحلیل Crashlytics مشخص کرده است که این فریم دلیل خرابی یا خطا است
خطا ضبط مکرر فقط برنامه های اپل: خطاهای غیر کشنده
error.queue_name STRING صفی که تاپیک در حال اجرا بود
کد خطا INT64 کد خطا مرتبط با خطای NSE ثبت شده سفارشی برنامه
error.title STRING عنوان تاپیک
error.زیرنویس STRING زیرنویس تاپیک
خطا.مقصر بولین آیا تجزیه و تحلیل Crashlytics مشخص کرد که این فریم دلیل خطا است یا خیر
خطا.قاب ضبط مکرر فریم های 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 توسعه دهنده، فروشنده، زمان اجرا، پلت فرم، یا سیستم
خطا.قاب.مقصر بولین آیا تجزیه و تحلیل Crashlytics مشخص کرد که این فریم دلیل خطا است یا خیر
موضوعات ضبط مکرر موضوعات موجود در زمان رویداد
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 ثبت‌شده سفارشی برنامه
موضوعات. عنوان STRING عنوان تاپیک
threads.subtitle STRING زیرنویس تاپیک
رشته ها.سرزنش کردند بولین آیا تجزیه و تحلیل 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 توسعه دهنده، فروشنده، زمان اجرا، پلت فرم، یا سیستم
رشته ها.قاب ها.سرزنش بولین آیا تجزیه و تحلیل 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. با انتخاب My Projects > [your-project-name] > firebase_crashlytics > [your-table-name]، جدولی حاوی داده‌های Crashlytics صادر شده را انتخاب کنید. جدول دسته ای شما همیشه برای انتخاب در دسترس است. اگر صادر کردن جریان Crashlytics BigQuery فعال باشد، می‌توانید به جای آن جدول بیدرنگ خود را انتخاب کنید.
  6. در قسمت پیکربندی ، سطح الگوی Crashlytics را روی پیش‌فرض تنظیم کنید.
  7. برای ایجاد منبع داده جدید روی Connect کلیک کنید.
  8. برای بازگشت به الگوی Crashlytics روی افزودن به گزارش کلیک کنید.
  9. در نهایت، روی ایجاد گزارش کلیک کنید تا یک کپی از قالب داشبورد Crashlytics Data Studio ایجاد کنید.