می توانید داده های Crashlytics خود را برای تجزیه و تحلیل بیشتر به BigQuery صادر کنید. BigQuery به شما امکان میدهد دادهها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آنها را به یک ارائهدهنده ابر دیگر صادر کنید و از آن برای تجسم و داشبوردهای سفارشی با Google Data Studio استفاده کنید.
صادرات BigQuery را فعال کنید
- به صفحه ادغام در کنسول Firebase بروید.
- در کارت BigQuery ، روی پیوند کلیک کنید.
- دستورالعمل های روی صفحه را برای فعال کردن 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 را فعال می کنید، علاوه بر جدول دسته ای، یک جدول بیدرنگ خواهید داشت. در اینجا تفاوت هایی وجود دارد که باید بین جداول از آنها آگاه باشید:
جدول دسته ای | جدول بیدرنگ |
---|---|
|
|
جدول دسته ای برای تجزیه و تحلیل طولانی مدت و شناسایی روندها در طول زمان ایده آل است، زیرا ما رویدادها را قبل از نوشتن آنها به طور بادوام ذخیره می کنیم و می توان آنها را تا 90 روز روی جدول پر کرد. وقتی دادهها را در جدول بیدرنگ شما مینویسیم، بلافاصله آن را در BigQuery مینویسیم، و بنابراین برای داشبوردهای زنده و هشدارهای سفارشی ایدهآل است. این دو جدول را می توان با یک کوئری دوخت ترکیب کرد تا از مزایای هر دو بهره مند شود. مثال 9 را در زیر ببینید.
بهطور پیشفرض، جدول Realtime زمان انقضای پارتیشن 30 روزه دارد. برای یادگیری نحوه تغییر این، به به روز رسانی انقضای پارتیشن مراجعه کنید.
پخش جریانی Crashlytics BigQuery را فعال کنید
برای فعال کردن استریم، به بخش Crashlytics در صفحه ادغامهای BigQuery بروید و کادر بررسی شامل پخش جریانی را انتخاب کنید.
قالب Data Studio
برای فعال کردن دادههای بیدرنگ در قالب Data Studio خود، دستورالعملهای موجود در Visualizing Crashlytics صادر شده با Data Studio را دنبال کنید.
بازدیدها
می توانید با استفاده از رابط کاربری BigQuery، پرس و جوهای مثال زیر را به نما تبدیل کنید. برای دستورالعمل های دقیق به ایجاد نماها مراجعه کنید.
با داده های صادر شده چه کاری می توانید انجام دهید؟
صادرات BigQuery حاوی دادههای خرابی خام از جمله نوع دستگاه، سیستم عامل، استثناها (برنامههای اندروید) یا خطاها (برنامههای اپل) و گزارشهای 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 در بالا برای شناسایی شناسه مشکل خرابی خاص استفاده کنند. اکنون تیم مایل است ببیند که آیا این خرابی به کاربران کشورهای مختلف در سراسر جهان سرایت کرده است یا خیر.
برای نوشتن این پرسش، تیم باید:
صادرات BigQuery را برای Google Analytics فعال کنید. صادرات داده های پروژه به BigQuery را ببینید.
برنامه آنها را بهروزرسانی کنید تا یک شناسه کاربری را به 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");
درخواستی بنویسید که از فیلد شناسه کاربر برای پیوستن به رویدادهای مجموعه دادههای 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 مشاهده کنید. میتوانید از نمونه بهعنوان الگو برای ایجاد سریع گزارشها و تجسمهای جدید بر اساس دادههای خرابی خام برنامه خود استفاده کنید:
- قالب داشبورد Crashlytics Data Studio را باز کنید.
- روی Use Template در گوشه سمت راست بالا کلیک کنید.
- در منوی کشویی New Data Source ، Create New Data Source را انتخاب کنید.
- در کارت BigQuery روی Select کلیک کنید.
- با انتخاب My Projects > [your-project-name] > firebase_crashlytics > [your-table-name]، جدولی حاوی دادههای Crashlytics صادر شده را انتخاب کنید. جدول دسته ای شما همیشه برای انتخاب در دسترس است. اگر صادرات جریان Crashlytics BigQuery فعال باشد، میتوانید به جای آن جدول بیدرنگ خود را انتخاب کنید.
- در قسمت پیکربندی ، سطح الگوی Crashlytics را روی پیشفرض تنظیم کنید.
- برای ایجاد منبع داده جدید روی Connect کلیک کنید.
- برای بازگشت به الگوی Crashlytics روی افزودن به گزارش کلیک کنید.
- در نهایت، روی ایجاد گزارش کلیک کنید تا یک کپی از قالب داشبورد Crashlytics Data Studio ایجاد کنید.