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

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

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

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

در اینجا چند نمونه از کارهایی که می توانید با داده های Crashlytics صادر شده خود انجام دهید آورده شده است:

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

  • از یک قالب Looker Studio استفاده کنید
    Crashlytics یک الگوی از پیش ساخته Looker Studio برای تجسم داده های صادر شده شما ارائه می دهد.

  • ایجاد نماها
    با استفاده از رابط کاربری BigQuery ، می توانید یک "نما" ایجاد کنید که یک جدول مجازی است که توسط یک پرس و جوی SQL تعریف شده است. برای دستورالعمل های دقیق در مورد انواع مختلف نماها و نحوه ایجاد آنها، به مستندات BigQuery مراجعه کنید.

صادرات جریان Crashlytics به BigQuery

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

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

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

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

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

* جزئیات مربوط به پشتیبانی از پر کردن را در ارتقا به زیرساخت صادرات جدید مشاهده کنید.



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

  1. در کنسول Firebase ، به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی پیوند کلیک کنید.

  3. دستورالعمل های روی صفحه را دنبال کنید تا صادرات به BigQuery را فعال کنید.

    اگر می‌خواهید تقریباً به داده‌های Crashlytics خود در BigQuery دسترسی بی‌درنگ داشته باشید، پس ارتقاء را به صادرات جریانی در نظر بگیرید.

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

  1. در کنسول Firebase ، به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی مدیریت کلیک کنید.

  3. چک باکس Include streaming را انتخاب کنید.

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

وقتی صادرات را فعال می کنید چه اتفاقی می افتد؟

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

    این مکان فقط برای داده‌های صادر شده به BigQuery قابل اجرا است و بر مکان داده‌های ذخیره‌شده برای استفاده در داشبورد Crashlytics کنسول Firebase یا در Android Studio تأثیری نمی‌گذارد.

  • به‌طور پیش‌فرض، همه برنامه‌های پروژه شما به BigQuery مرتبط می‌شوند و هر برنامه‌ای که بعداً به پروژه اضافه می‌کنید به‌طور خودکار به BigQuery مرتبط می‌شود. می‌توانید مدیریت کنید که کدام برنامه‌ها داده‌ها را ارسال می‌کنند .

  • Firebase همگام‌سازی روزانه داده‌های شما را با BigQuery تنظیم می‌کند.

    • پس از اینکه پروژه خود را پیوند دادید، معمولاً باید منتظر بمانید تا روز بعد همگام سازی شود تا اولین مجموعه داده شما به BigQuery صادر شود.

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

  • Firebase یک کپی از داده های موجود شما را به BigQuery صادر می کند. انتشار اولیه داده ها برای صادرات ممکن است تا 48 ساعت طول بکشد.

    • برای هر برنامه پیوند داده شده، این صادرات شامل یک جدول دسته‌ای است که حاوی داده‌های همگام‌سازی روزانه است.

    • می‌توانید به‌صورت دستی پر کردن داده‌ها را برای جدول دسته‌ای تا 30 روز گذشته یا برای آخرین تاریخی که صادرات به BigQuery را فعال کرده‌اید (هر کدام جدیدترین باشد) زمان‌بندی کنید.

    توجه داشته باشید که اگر صادرات داده‌های Crashlytics را قبل از اواسط اکتبر 2024 فعال کرده باشید، می‌توانید 30 روز قبل از روزی که صادرات را فعال کرده‌اید پر کنید.

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

برای غیرفعال کردن صادرات به BigQuery ، پیوند پروژه خود را در کنسول 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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD")
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;



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

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

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

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

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

  1. الگوی داشبورد استودیوی Crashlytics Looker 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 Looker Studio ایجاد شود.



طرحواره Crashlytics در BigQuery را درک کنید

داده های Firebase Crashlytics به یک مجموعه داده BigQuery به نام firebase_crashlytics صادر می شود. مجموعه داده کل پروژه شما را پوشش می دهد، حتی اگر چندین برنامه داشته باشد.

جداول

به‌طور پیش‌فرض، Firebase جداول جداگانه‌ای را در مجموعه داده‌های Crashlytics برای هر برنامه پروژه شما که به BigQuery مرتبط است ایجاد می‌کند. جداول بر اساس شناسه برنامه (با نقطه تبدیل به زیرخط) نام‌گذاری شده و به پلتفرم برنامه ( _IOS یا _ANDROID ) اضافه می‌شوند. به عنوان مثال، داده‌های یک برنامه Android با نام بسته com.google.test در جدولی به نام com_google_test_ANDROID وجود دارد.

اگر صادرات جریان Crashlytics به BigQuery را فعال کنید، داده‌های Crashlytics نیز به‌صورت بیدرنگ به جدولی که با _REALTIME اضافه شده است (به عنوان مثال com_google_test_ANDROID_REALTIME ) پخش می‌شود.

هر ردیف در جدول نشان دهنده رویدادی است که در برنامه رخ داده است، از جمله خرابی ها، خطاهای غیر کشنده و ANR.

جداول شامل مجموعه استانداردی از داده های Crashlytics علاوه بر کلیدهای Crashlytics سفارشی است که توسط شما در برنامه خود تعریف شده است.

ردیف ها

هر ردیف در جدول نشان دهنده خطایی است که برنامه با آن مواجه شده است.

ستون ها

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

در اینجا ستون‌های جدول مربوط به داده‌های Crashlytics صادر شده است:

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



ارتقاء به زیرساخت جدید صادرات

در اواسط اکتبر 2024، Crashlytics زیرساخت جدیدی را برای صادرات دسته ای داده های Crashlytics به BigQuery راه اندازی کرد.

همه پروژه‌های Firebase از 15 سپتامبر 2025 به‌طور خودکار به زیرساخت صادرات دسته‌ای جدید ارتقا داده می‌شوند. می‌توانید قبل از این تاریخ ارتقا دهید ، اما مطمئن شوید که جداول دسته‌ای BigQuery شما پیش‌نیازهای ارتقا را دارند.

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

تعیین کنید که آیا در زیرساخت جدید هستید یا خیر

اگر صادرات دسته‌ای را در اواسط اکتبر ۲۰۲۴ یا بعد از آن فعال کرده‌اید، پروژه Firebase شما به‌طور خودکار از زیرساخت صادرات جدید استفاده می‌کند.

می‌توانید بررسی کنید که پروژه شما از کدام زیرساخت استفاده می‌کند: به کنسول Google Cloud بروید، و اگر «پیکربندی انتقال داده» شما برچسب Firebase Crashlytics with Multi-Region Support دارد، پروژه شما از زیرساخت صادرات جدید استفاده می‌کند.

تفاوت های مهم بین زیرساخت صادرات قدیمی و زیرساخت صادرات جدید

  • زیرساخت جدید از مکان های داده Crashlytics در خارج از ایالات متحده پشتیبانی می کند.

    • صادرات قبل از اواسط اکتبر 2024 فعال شد و به زیرساخت صادرات جدید ارتقا یافت — اکنون می توانید به صورت اختیاری مکان را برای صادرات داده تغییر دهید .

    • صادرات در اواسط اکتبر 2024 یا بعد از آن فعال شد - در حین تنظیم از شما خواسته شد مکانی را برای صادرات داده انتخاب کنید.

  • زیرساخت جدید از پر کردن داده‌های قبل از فعال کردن صادرات پشتیبانی نمی‌کند.

    • زیرساخت قدیمی تا 30 روز قبل از تاریخی که صادرات را فعال کرده‌اید، پشتیبان را پشتیبانی می‌کرد.

    • زیرساخت جدید تا 30 روز گذشته یا برای آخرین تاریخی که صادرات به BigQuery را فعال کرده‌اید (هر کدام که جدیدترین باشد) پشتیبانی می‌کند.

  • زیرساخت جدید جداول دسته ای BigQuery با استفاده از شناسه های تنظیم شده برای برنامه های Firebase شما در پروژه Firebase نامگذاری می کند.

    • زیرساخت قدیمی داده‌ها را به جداول دسته‌ای با نام‌هایی بر اساس شناسه‌های بسته یا نام بسته در باینری برنامه شما می‌نوشت.

    • زیرساخت جدید داده‌ها را در جداول دسته‌ای با نام‌هایی بر اساس شناسه‌های بسته یا نام‌های بسته تنظیم‌شده برای برنامه‌های Firebase ثبت‌شده شما در پروژه Firebase می‌نویسد.

مرحله 1 : پیش نیاز برای ارتقا

  1. بررسی کنید که جداول دسته‌ای BigQuery شما از شناسه‌های منطبق با شناسه‌های بسته یا نام بسته‌های تنظیم‌شده برای برنامه‌های Firebase ثبت‌شده شما در پروژه Firebase استفاده می‌کنند. اگر مطابقت ندارند، ممکن است در داده‌های دسته‌ای صادر شده با اختلال مواجه شوید. اکثر پروژه ها در وضعیت مناسب و سازگار خواهند بود، اما مهم است که قبل از ارتقا بررسی شود.

    • می‌توانید همه برنامه‌های Firebase ثبت‌شده در پروژه Firebase خود را در کنسول Firebase پیدا کنید: به خود بروید ، تنظیمات پروژه ، سپس به کارت برنامه‌های شما بروید تا همه برنامه‌های Firebase و اطلاعات آنها را ببینید.

    • می‌توانید تمام جداول دسته‌ای BigQuery خود را در صفحه BigQuery کنسول Google Cloud پیدا کنید.

    برای مثال، در اینجا حالت‌های ایده‌آلی وجود دارد که در آن‌ها هیچ مشکلی در ارتقاء نخواهید داشت:

    • شما یک جدول دسته ای به نام com_yourcompany_yourproject_IOS و یک برنامه Firebase iOS+ با شناسه بسته com.yourcompany.yourproject دارید که در پروژه Firebase شما ثبت شده است.

    • شما یک جدول دسته ای به نام com_yourcompany_yourproject_ANDROID و یک برنامه Android Firebase با نام بسته com.yourcompany.yourproject دارید که در پروژه Firebase شما ثبت شده است.

  2. اگر نام‌های جدول دسته‌ای دارید که با شناسه‌های تنظیم‌شده برای برنامه‌های Firebase ثبت‌شده شما مطابقت ندارد ، دستورالعمل‌های بعدی این صفحه را قبل از ارتقای دستی یا قبل از ۱۵ سپتامبر ۲۰۲۵ دنبال کنید تا از اختلال در صادرات دسته‌ای خود جلوگیری کنید.

مرحله 2 : به صورت دستی به زیرساخت جدید ارتقا دهید

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

در اینجا مراحل دقیق وجود دارد:

  1. در کنسول Firebase ، به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی مدیریت کلیک کنید.

  3. برای غیرفعال کردن صادرات، نوار لغزنده Crashlytics را خاموش کنید. وقتی از شما خواسته شد، تأیید کنید که می‌خواهید صادرات داده متوقف شود.

  4. بلافاصله نوار لغزنده Crashlytics را مجدداً روشن کنید تا صادرات مجدد فعال شود. وقتی از شما خواسته شد، تأیید کنید که می‌خواهید داده‌ها را صادر کنید.

    صادر کردن داده های Crashlytics شما به BigQuery اکنون از زیرساخت صادرات جدید استفاده می کند.

نام جدول دسته ای موجود شما با شناسه برنامه Firebase شما مطابقت ندارد

،

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

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

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

در اینجا چند نمونه از آنچه می توانید با داده های صادر شده Crashlytics خود انجام دهید آورده شده است:

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

  • از الگوی Looker Studio استفاده کنید
    Crashlytics یک الگوی Looker Studio از پیش ساخته برای تجسم داده های صادر شده شما فراهم می کند.

  • نمای ایجاد کنید
    با استفاده از UI BigQuery ، می توانید "نمای" ایجاد کنید ، که یک جدول مجازی است که توسط یک پرس و جو SQL تعریف شده است. برای دستورالعمل های دقیق در مورد انواع مختلف نماها و نحوه ایجاد آنها ، به مستندات BigQuery مراجعه کنید.

Crashlytics Export به BigQuery

می توانید داده های Crashlytics خود را در زمان واقعی با پخش BigQuery پخش کنید. شما می توانید از آن برای هر منظور که به داده های زنده نیاز داشته باشد ، مانند ارائه اطلاعات در داشبورد زنده ، تماشای یک برنامه زنده یا نظارت بر مشکلات برنامه که باعث هشدار و گردش کار سفارشی می شود ، استفاده کنید.

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

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

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

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

* جزئیات مربوط به پشتیبانی Backfill را در ارتقاء زیرساخت های جدید صادرات مشاهده کنید.



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

  1. در کنسول Firebase به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی پیوند کلیک کنید.

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

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

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

  1. در کنسول Firebase به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی مدیریت کلیک کنید.

  3. کادر انتخاب شامل جریان را انتخاب کنید.

این عمل امکان پخش همه برنامه های مرتبط شما را فراهم می کند.

چه اتفاقی می افتد که صادرات را فعال کنید؟

  • شما مکان مجموعه داده را انتخاب می کنید. پس از ایجاد مجموعه داده ، مکان قابل تغییر نیست ، اما می توانید مجموعه داده ها را در یک مکان متفاوت کپی کرده یا به صورت دستی حرکت داده (بازآفرینی) مجموعه داده را در یک مکان متفاوت قرار دهید. برای کسب اطلاعات بیشتر ، به تغییر مکان برای صادرات موجود مراجعه کنید.

    این مکان فقط برای داده های صادر شده به BigQuery قابل اجرا است و بر محل داده های ذخیره شده برای استفاده در داشبورد Crashlytics کنسول Firebase یا در استودیوی اندرویدی تأثیر نمی گذارد.

  • به طور پیش فرض ، تمام برنامه های پروژه شما به BigQuery مرتبط هستند و هر برنامه ای که بعداً به پروژه اضافه می کنید به طور خودکار با BigQuery مرتبط می شوند. شما می توانید مدیریت کنید که برنامه ها داده ها را ارسال می کنند .

  • Firebase همگام سازی روزانه داده های شما را به BigQuery تنظیم می کند.

    • بعد از پیوند پروژه خود ، معمولاً باید تا همگام سازی روز بعد منتظر بمانید تا اولین مجموعه داده های خود را به BigQuery صادر کنید.

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

  • Firebase نسخه ای از داده های موجود خود را به BigQuery صادر می کند. انتشار اولیه داده ها برای صادرات ممکن است تا 48 ساعت طول بکشد.

    • برای هر برنامه مرتبط ، این صادرات شامل یک جدول دسته ای است که حاوی داده های مربوط به همگام سازی روزانه است.

    • شما می توانید تا 30 روز گذشته یا جدیدترین تاریخ را که می توانید صادرات به BigQuery را فعال کنید (هر کدام از جدیدترین موارد) را به صورت دستی تنظیم کنید .

    توجه داشته باشید که اگر قبل از اواسط اکتبر 2024 ، داده های Crashlytics را فعال کرده اید ، می توانید 30 روز قبل از روزی که صادرات را فعال کرده اید ، دوباره به عقب برگردید.

  • اگر صادرات جریان Crashlytics را به BigQuery فعال کنید ، تمام برنامه های مرتبط نیز دارای یک جدول زمان واقعی هستند که حاوی داده های دائماً به روز می شود.

برای غیرفعال کردن صادرات به BigQuery ، پروژه خود را در کنسول Firebase مجدداً جستجو کنید.



پرس و جوهای نمونه

مثال 1: تصادفات روز

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

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

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

پاییز فصل جدید تلفن است! شرکت شما می داند که این همچنین به این معنی است که فصل جدید مشکلات خاص دستگاه است-به خصوص برای اندروید. برای پیشروی از نگرانی های سازگاری فراگیر ، شما یک پرس و جو را در کنار هم قرار داده اید که 10 دستگاهی را که بیشترین تصادفات را در هفته گذشته (168 ساعت) تجربه کرده اند ، مشخص می کند.

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

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

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

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

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

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

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

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

همچنین می توانید جداول دسته و زمان واقعی را با یک پرس و جو دوخت ترکیب کنید تا اطلاعات زمان واقعی را به داده های دسته ای قابل اعتماد اضافه کنید. از آنجا که event_id یک کلید اصلی است ، می توانید از DISTINCT event_id استفاده کنید تا هر یک از رویدادهای مشترک را از دو جدول Dedupe کنید.

در اینجا یک نمونه پرس و جو برای یک برنامه Android آورده شده است. برای یک برنامه iOS ، از شناسه بسته نرم افزاری و 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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD")
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;



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

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

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

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

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

  1. الگوی داشبورد استودیوی Crashlytics Looker Studio را باز کنید.

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

  3. در پایین آمدن منبع داده جدید ، ایجاد منبع داده جدید را انتخاب کنید.

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

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

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

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

  7. برای ایجاد منبع داده جدید ، روی اتصال کلیک کنید.

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

  9. در آخر ، روی ایجاد گزارش کلیک کنید تا نسخه خود از الگوی داشبورد استودیوی Crashlytics Looker Studio ایجاد کنید.



طرح Crashlytics در BigQuery درک کنید

داده های Firebase Crashlytics به یک مجموعه داده BigQuery به نام firebase_crashlytics صادر می شود. مجموعه داده ها کل پروژه شما را پوشش می دهد ، حتی اگر برنامه های مختلفی داشته باشد.

جداول

به طور پیش فرض ، Firebase جداول جداگانه ای را در داخل مجموعه داده های Crashlytics برای هر برنامه در پروژه شما ایجاد می کند که به BigQuery مرتبط است. جداول بر اساس شناسه برنامه (با دوره های تبدیل به زیرزمین ها) نامگذاری شده و با پلت فرم برنامه ( _IOS یا _ANDROID ) ضمیمه می شوند. به عنوان مثال ، داده ها برای یک برنامه Android با نام بسته com.google.test در جدول به نام com_google_test_ANDROID قرار دارد.

اگر صادرات جریان Crashlytics را به BigQuery فعال کنید ، داده های Crashlytics نیز در زمان واقعی به یک جدول اضافه می شوند که با _REALTIME (به عنوان مثال ، com_google_test_ANDROID_REALTIME ) پخش می شود.

هر ردیف در یک جدول نشانگر رویدادی است که در برنامه رخ داده است ، از جمله تصادفات ، خطاهای غیر کشنده و ANR.

جداول علاوه بر هرگونه کلیدهای Crashlytics سفارشی که توسط شما در برنامه خود تعریف شده است ، مجموعه استاندارد از داده های Crashlytics را شامل می شود.

ردیف ها

هر ردیف در یک جدول خطایی را که برنامه با آن روبرو است نشان می دهد.

ستون ها

ستون های یک جدول برای تصادفات ، خطاهای غیر کشنده و ANR یکسان هستند. اگر صادرات جریان Crashlytics به BigQuery فعال شود ، جدول Realtime دارای ستون های مشابه جدول دسته ای خواهد بود. توجه داشته باشید که ممکن است ستون هایی در ردیف داشته باشید که نمایانگر رویدادهایی هستند که اثری از پشته ندارند.

در اینجا ستون های جدول برای داده های صادر شده Crashlytics آمده است:

نام فیلد نوع داده توضیحات
app_orientation STRING به عنوان مثال ، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN و غیره.
application ضبط برنامه ای که این رویداد را ایجاد کرده است
application.build_version STRING نسخه ساخت برنامه
application.display_version STRING
blame_frame ضبط قاب شناخته شده به عنوان علت اصلی تصادف یا خطا
blame_frame.address int64 آدرس در تصویر باینری که حاوی کد است
برای قاب های جاوا غیرقانونی است
blame_frame.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت تصادف یا خطا است
blame_frame.file STRING نام پرونده قاب
blame_frame.library STRING نام نمایشگر کتابخانه که شامل قاب است
blame_frame.line int64 شماره خط پرونده قاب
blame_frame.offset int64 جبران بایت به تصویر باینری که حاوی کد است
برای استثنائات جاوا غیرقانونی است
blame_frame.owner STRING به عنوان مثال ، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM یا SYSTEM
blame_frame.symbol STRING نماد هیدراته یا نماد خام در صورت عدم پذیرش
breadcrumbs سابقه مکرر در صورت فعال بودن ، نان آنالیز Google Analytics
breadcrumbs.name STRING نام مرتبط با آرد سوخاری
breadcrumbs.params سابقه مکرر پارامترهای مرتبط با نان
breadcrumbs.params.key STRING یک کلید پارامتر مرتبط با آرد سوخاری
breadcrumbs.params.value STRING مقدار پارامتر مرتبط با آرد سوخاری
breadcrumbs.timestamp زمان سنج Timestamp مرتبط با آرد سوخاری
bundle_identifier STRING شناسه منحصر به فرد برای برنامه به عنوان ثبت شده در پروژه Firebase (به عنوان مثال ، com.google.gmail )
برای برنامه های Apple Platform ، این شناسه بسته برنامه است.
برای برنامه های Android ، این نام بسته برنامه است.
crashlytics_sdk_versions STRING نسخه SDK Crashlytics که این رویداد را ایجاد کرده است
custom_keys سابقه مکرر جفت های ارزش کلید تعریف شده توسط توسعه دهنده
custom_keys.key STRING یک کلید تعریف شده توسط توسعه دهنده
custom_keys.value STRING یک مقدار تعریف شده توسط توسعه دهنده
device ضبط دستگاهی که این رویداد در آن رخ داده است
device_orientation STRING به عنوان مثال ، PORTRAIT ، LANDSCAPE ، FACE_UP ، FACE_DOWN و غیره.
device.architecture STRING به عنوان مثال ، X86_32 ، X86_64 ، ARMV7 ، ARM64 ، ARMV7S یا ARMV7K
device.manufacturer STRING سازنده دستگاه
device.model STRING مدل دستگاه
error سابقه مکرر (فقط برنامه های اپل) خطاهای غیر کشنده
error_type STRING نوع خطای رویداد (به عنوان مثال ، FATAL ، NON_FATAL ، ANR و غیره)
error.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت خطا است
error.code int64 کد خطا مرتبط با NSERROR ورود به سیستم سفارشی برنامه
error.frames سابقه مکرر قاب های StackTrace
error.frames.address int64 آدرس در تصویر باینری که حاوی کد است
error.frames.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت خطا است
error.frames.file STRING نام پرونده قاب
error.frames.library STRING نام نمایشگر کتابخانه که شامل قاب است
error.frames.line int64 شماره خط پرونده قاب
error.frames.offset int64 جبران بایت به تصویر باینری که حاوی کد است
error.frames.owner STRING به عنوان مثال ، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM یا SYSTEM
error.frames.symbol STRING نماد هیدراته یا نماد خام در صورت عدم پذیرش
error.queue_name STRING صف که نخ در حال اجرا بود
error.subtitle STRING زیرنویس موضوع
error.title STRING عنوان موضوع
event_id STRING شناسه منحصر به فرد برای این رویداد
event_timestamp زمان سنج وقتی این رویداد رخ داد
exceptions سابقه مکرر (فقط Android) استثنائاتی که در این رویداد رخ داده است. استثنائات تو در تو به ترتیب زمانی معکوس ارائه شده است ، به این معنی که آخرین رکورد اولین استثناء است
exceptions.blamed بولین درست است اگر Crashlytics استثناء مسئول خطا یا تصادف است
exceptions.exception_message STRING پیام مرتبط با استثنا
exceptions.frames سابقه مکرر قاب های مرتبط با استثنا
exceptions.frames.address int64 آدرس در تصویر باینری که حاوی کد است
برای قاب های جاوا غیرقانونی است
exceptions.frames.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت تصادف یا خطا است
exceptions.frames.file STRING نام پرونده قاب
exceptions.frames.library STRING نام نمایشگر کتابخانه که شامل قاب است
exceptions.frames.line int64 شماره خط پرونده قاب
exceptions.frames.offset int64 جبران بایت به تصویر باینری که حاوی کد است
برای استثنائات جاوا غیرقانونی است
exceptions.frames.owner STRING به عنوان مثال ، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM یا SYSTEM
exceptions.frames.symbol STRING نماد هیدراته یا نماد خام در صورت عدم پذیرش
exceptions.nested بولین درست برای همه به جز استثناء آخرین پرتاب (به معنی رکورد اول)
exceptions.subtitle STRING زیرنویس موضوع
exceptions.title STRING عنوان موضوع
exceptions.type STRING نوع استثنا (به عنوان مثال ، java.lang.IllegalStateException)
installation_uuid STRING شناسه ای که یک برنامه منحصر به فرد و نصب دستگاه را مشخص می کند
is_fatal بولین آیا برنامه خراب شده است
issue_id STRING مسئله مرتبط با این رویداد
logs سابقه مکرر پیام های ورود به سیستم Timestamped تولید شده توسط گزارش Crashlytics ، در صورت فعال کردن
logs.message STRING پیام وارد شده
logs.timestamp زمان سنج وقتی ورود به سیستم ساخته شد
memory ضبط وضعیت حافظه دستگاه
memory.free int64 بایت حافظه باقی مانده
memory.used int64 بایت حافظه استفاده شده
operating_system ضبط جزئیات سیستم عامل در دستگاه
operating_system.device_type STRING نوع دستگاه (به عنوان مثال ، MOBILE ، TABLET ، TV و غیره) ؛ همچنین به عنوان "دسته دستگاه" شناخته می شود
operating_system.display_version STRING نسخه سیستم عامل در دستگاه
operating_system.modification_state STRING آیا دستگاه اصلاح شده است (به عنوان مثال ، یک برنامه Jailbroken MODIFIED و یک برنامه ریشه دار UNMODIFIED است)
operating_system.name STRING نام سیستم عامل در دستگاه
operating_system.type STRING (فقط برنامه های اپل) نوع سیستم عامل در حال اجرا بر روی دستگاه (به عنوان مثال ، IOS ، MACOS و غیره)
platform STRING بستر برنامه به عنوان ثبت شده در پروژه Firebase (مقادیر معتبر: IOS یا ANDROID )
process_state STRING BACKGROUND یا FOREGROUND
storage ضبط ذخیره مداوم دستگاه
storage.free int64 بایت ذخیره سازی باقی مانده
storage.used int64 بایت ذخیره سازی استفاده شده
threads سابقه مکرر موضوعات موجود در زمان رویداد
threads.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت تصادف یا خطا است
threads.code int64 (فقط برنامه های اپل) کد خطای NSERROR ثبت شده برنامه کاربردی برنامه
threads.crash_address int64 آدرس سیگنال که باعث خراب شدن برنامه شد. فقط در موضوعات بومی سقوط شده موجود است
threads.crashed بولین آیا موضوع خراب شده است
threads.frames سابقه مکرر قاب های نخ
threads.frames.address int64 آدرس در تصویر باینری که حاوی کد است
threads.frames.blamed بولین آیا Crashlytics تعیین کرده است که این قاب علت خطا است
threads.frames.file STRING نام پرونده قاب
threads.frames.library STRING نام نمایشگر کتابخانه که شامل قاب است
threads.frames.line int64 شماره خط پرونده قاب
threads.frames.offset int64 جبران بایت به تصویر باینری که حاوی کد است
threads.frames.owner STRING به عنوان مثال ، DEVELOPER ، VENDOR ، RUNTIME ، PLATFORM یا SYSTEM
threads.frames.symbol STRING نماد هیدراته یا نماد خام در صورت عدم درمان
threads.queue_name STRING (فقط برنامه های اپل) صف که موضوع در حال اجرا بود
threads.signal_code STRING کد سیگنال که باعث خراب شدن برنامه شد. فقط در موضوعات بومی سقوط شده موجود است
threads.signal_name STRING نام سیگنالی که باعث خراب شدن برنامه شد ، فقط در موضوعات بومی خراب شده وجود دارد
threads.subtitle STRING زیرنویس موضوع
threads.thread_name STRING نام موضوع
threads.title STRING عنوان موضوع
unity_metadata.debug_build بولین اگر این یک ساخت اشکال است
unity_metadata.graphics_copy_texture_support STRING پشتیبانی از کپی کردن بافت گرافیکی همانطور که در API وحدت تعریف شده است
unity_metadata.graphics_device_id int64 شناسه دستگاه گرافیکی
unity_metadata.graphics_device_name STRING نام دستگاه گرافیکی
unity_metadata.graphics_device_type STRING نوع دستگاه گرافیک
unity_metadata.graphics_device_vendor_id int64 شناسه فروشنده پردازنده گرافیک
unity_metadata.graphics_device_vendor STRING فروشنده دستگاه گرافیک
unity_metadata.graphics_device_version STRING نسخه دستگاه گرافیکی
unity_metadata.graphics_max_texture_size int64 حداکثر اندازه اختصاص یافته به ارائه بافت
unity_metadata.graphics_memory_size_mb int64 حافظه گرافیکی در MB
unity_metadata.graphics_render_target_count int64 تعداد اهداف ارائه گرافیکی
unity_metadata.graphics_shader_level int64 سطح سایه بان گرافیک
unity_metadata.processor_count int64 تعداد پردازنده ها (هسته)
unity_metadata.processor_frequency_mhz int64 فراوانی پردازنده (ها) در MHz
unity_metadata.processor_type STRING نوع پردازنده
unity_metadata.screen_refresh_rate_hz int64 نرخ تازه کردن صفحه در هرتز
unity_metadata.screen_resolution_dpi STRING DPI صفحه به عنوان یک شماره نقطه شناور
unity_metadata.screen_size_px STRING اندازه صفحه نمایش در پیکسل ها ، به عنوان عرض x ارتفاع فرمت شده است
unity_metadata.system_memory_size_mb int64 اندازه حافظه سیستم در MB
unity_metadata.unity_version STRING نسخه وحدت در این دستگاه اجرا می شود
user ضبط (اختیاری) اطلاعات جمع آوری شده در مورد کاربر برنامه
user.email STRING (اختیاری) آدرس ایمیل کاربر
user.id STRING (اختیاری) شناسه خاص برنامه مرتبط با کاربر
user.name STRING (اختیاری) نام کاربر
variant_id STRING نوع مسئله مرتبط با این رویداد
توجه داشته باشید که همه رویدادها یک نوع مسئله مرتبط ندارند.



به زیرساخت های جدید صادرات ارتقا دهید

در اواسط اکتبر 2024 ، Crashlytics زیرساخت جدیدی را برای صادرات دسته ای از داده های Crashlytics به BigQuery راه اندازی کرد.

تمام پروژه های Firebase به طور خودکار از اوایل 15 سپتامبر 2025 به زیرساخت های صادرات دسته ای جدید ارتقا می یابند. می توانید قبل از این تاریخ ارتقا دهید ، اما اطمینان حاصل کنید که میزهای دسته ای BigQuery شما پیش نیازهای ارتقا را برآورده می کند.

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

تعیین کنید که آیا در زیرساخت های جدید هستید

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

شما می توانید بررسی کنید که از کدام زیرساخت پروژه شما استفاده می کند: به کنسول Google Cloud بروید ، و اگر "پیکربندی انتقال داده" شما با عنوان Firebase Crashlytics with Multi-Region Support گذاری شده است ، پروژه شما از زیرساخت های جدید صادرات استفاده می کند.

تفاوت های مهم بین زیرساخت های صادراتی قدیمی و زیرساخت های جدید صادرات

  • زیرساخت های جدید از مکان های مجموعه داده های Crashlytics در خارج از ایالات متحده پشتیبانی می کند.

    • صادرات قبل از اواسط اکتبر 2024 فعال شده و به زیرساخت های جدید صادرات ارتقا یافته است-اکنون می توانید به صورت اختیاری مکان را برای صادرات داده تغییر دهید .

    • صادرات در اواسط اکتبر 2024 یا بعد از آن فعال شد-از شما در هنگام راه اندازی خواسته شد تا مکانی برای صادرات داده را انتخاب کنید.

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

    • زیرساخت های قدیمی تا 30 روز قبل از تاریخ فعال کردن صادرات ، از پشتی پشتیبانی می کردند.

    • زیرساخت های جدید تا 30 روز گذشته یا برای جدیدترین تاریخ پشتیبانی می کنند که شما می توانید صادرات به BigQuery را فعال کنید (هر کدام از جدیدترین ها).

  • زیرساخت های جدید با استفاده از شناسه های تنظیم شده برای برنامه های Firebase شما در پروژه Firebase ، جداول دسته ای BigQuery را نامگذاری می کنند.

    • زیرساخت های قدیمی داده هایی را برای جداول دسته ای با نام های مبتنی بر شناسه های بسته نرم افزاری یا نام های بسته بندی شده در باینری برنامه خود نوشت.

    • زیرساخت های جدید داده ها را به جداول دسته ای بر اساس شناسه های بسته نرم افزاری یا نام بسته بندی شده برای برنامه های Firebase ثبت شده شما در پروژه Firebase خود می نویسد.

مرحله 1 : پیش نیاز برای به روزرسانی

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

    • می توانید تمام برنامه های Firebase ثبت شده در پروژه Firebase خود را در کنسول Firebase پیدا کنید: به تنظیمات پروژه خود بروید ، سپس به کارت برنامه های خود بروید تا تمام برنامه های Firebase و اطلاعات آنها را ببینید.

    • می توانید تمام میزهای دسته بزرگ BigQuery خود را در صفحه BigQuery کنسول Google Cloud پیدا کنید.

    به عنوان مثال ، در اینجا کشورهای ایده آل وجود دارد که در آن هیچ مشکلی در ارتقا نخواهید داشت:

    • شما یک جدول دسته ای به نام com_yourcompany_yourproject_IOS و یک برنامه iOS+ Firebase با شناسه بسته نرم افزاری com.yourcompany.yourproject ثبت شده در پروژه Firebase خود دارید.

    • شما یک جدول دسته ای به نام com_yourcompany_yourproject_ANDROID و یک برنامه Android Firebase با نام بسته com.yourcompany.yourproject ثبت شده در پروژه Firebase خود دارید.

  2. اگر نام جدول دسته ای دارید که با شناسه های تنظیم شده برای برنامه های ثبت شده Firebase خود مطابقت ندارد ، بعداً قبل از به روزرسانی دستی یا قبل از 15 سپتامبر 2025 ، دستورالعمل ها را دنبال کنید تا از اختلال در صادرات دسته ای خودداری کنید.

مرحله 2 : به صورت دستی به زیرساخت های جدید ارتقا دهید

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

در اینجا مراحل مفصلی آورده شده است:

  1. در کنسول Firebase به صفحه ادغام بروید.

  2. در کارت BigQuery ، روی مدیریت کلیک کنید.

  3. برای غیرفعال کردن صادرات ، کشویی Crashlytics را خاموش کنید. در صورت درخواست ، تأیید کنید که می خواهید صادرات داده متوقف شود.

  4. بلافاصله دوباره به کشویی Crashlytics برای صادرات مجدد تغییر دهید. در صورت درخواست ، تأیید کنید که می خواهید داده ها را صادر کنید.

    صادرات داده های Crashlytics شما به BigQuery اکنون از زیرساخت های جدید صادرات استفاده می کند.

نام جدول دسته ای موجود شما با شناسه برنامه Firebase شما مطابقت ندارد