می توانید داده های Firebase Crashlytics خود را برای تجزیه و تحلیل بیشتر به BigQuery صادر کنید. BigQuery به شما امکان میدهد دادهها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آنها را به یک ارائهدهنده ابر دیگر صادر کنید و از آن برای تجسم و داشبوردهای سفارشی با Google Data Studio استفاده کنید.
صادرات به BigQuery را فعال کنید
- در کنسول Firebase ، به صفحه ادغام بروید.
- در کارت 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 می نویسیم و بنابراین برای داشبوردهای زنده و هشدارهای سفارشی ایده آل است. این دو جدول را می توان با یک کوئری دوخت ترکیب کرد تا از مزایای هر دو بهره مند شود.
بهطور پیشفرض، جدول Realtime زمان انقضای پارتیشن 30 روزه دارد. برای یادگیری نحوه تغییر این، به تنظیم انقضای پارتیشن در مستندات BigQuery مراجعه کنید.
صادرات جریان Crashlytics به BigQuery را فعال کنید
- در کنسول Firebase ، به صفحه ادغام بروید.
- در کارت BigQuery ، روی مدیریت کلیک کنید.
- چک باکس 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: تعداد کاربرانی که تحت تأثیر یک مشکل خرابی قرار گرفته اند، به تفکیک کشور
تیم شما در طول عرضه نسخه جدید یک اشکال مهم را شناسایی کرده است. میتوانید از عبارت «یافتن بیشترین خرابیها» در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کنید. تیم شما اکنون میخواهد ببیند که آیا این خرابی به کاربران کشورهای مختلف در سراسر جهان سرایت کرده است یا خیر.
برای نوشتن این پرس و جو، تیم شما باید موارد زیر را انجام دهد:
صادرات داده های Google Analytics به BigQuery را فعال کنید. صادرات داده های پروژه به BigQuery را ببینید.
برنامه خود را بهروزرسانی کنید تا شناسه کاربری را هم به 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");
درخواستی بنویسید که از فیلد شناسه کاربر برای پیوستن به رویدادهای مجموعه داده 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 مشاهده کنید. میتوانید از نمونه به عنوان الگو برای ایجاد سریع گزارشها و تجسمهای جدید بر اساس دادههای خرابی خام برنامه خود استفاده کنید. :
قالب داشبورد Crashlytics Data Studio را باز کنید.
روی Use Template در گوشه سمت راست بالا کلیک کنید.
در منوی کشویی New Data Source ، Create New Data Source را انتخاب کنید.
در کارت BigQuery روی Select کلیک کنید.
با انتخاب پروژههای من > PROJECT_ID > firebase_crashlytics > TABLE_NAME ، جدولی حاوی دادههای Crashlytics صادر شده را انتخاب کنید.
جدول دسته ای شما همیشه برای انتخاب در دسترس است. اگر صادرات جریان Crashlytics به BigQuery فعال باشد، میتوانید به جای آن جدول بیدرنگ خود را انتخاب کنید.
در قسمت پیکربندی ، سطح الگوی Crashlytics را روی پیشفرض تنظیم کنید.
برای ایجاد منبع داده جدید روی Connect کلیک کنید.
برای بازگشت به الگوی Crashlytics روی افزودن به گزارش کلیک کنید.
در نهایت روی Create Report کلیک کنید تا یک کپی از الگوی Crashlytics Data Studio Dashboard ایجاد شود.