Firebase Crashlytics verilerini BigQuery'ye aktarma

Daha ayrıntılı analiz için Firebase Crashlytics verilerinizi BigQuery'e aktarabilirsiniz. BigQuery, verileri BigQuery SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve Google Data Studio ile görselleştirme ve özel kontrol panelleri oluşturmak için kullanmanıza olanak tanır.

BigQuery biçimine aktarmayı etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

  2. BigQuery kartında Bağlantı'yı tıklayın.

  3. BigQuery'e dışa aktarma özelliğini etkinleştirmek için ekrandaki talimatları uygulayın.

    BigQuery'daki Crashlytics verilerinize neredeyse anlık erişim istiyorsanız akış dışa aktarma özelliğine geçiş yapabilirsiniz.

Dışa aktarma özelliğini etkinleştirdiğinizde ne olur?

  • Veri kümesi konumunu siz seçersiniz. Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya manuel olarak farklı bir konuma taşıyabilir (yeniden oluşturabilirsiniz). Daha fazla bilgi için Mevcut dışa aktarma işlemlerinin yerini değiştirme başlıklı makaleyi inceleyin.

    Bu konum yalnızca BigQuery'e aktarılan veriler için geçerlidir ve Firebase konsolunun Crashlytics kontrol panelinde veya Android Studio'da kullanılmak üzere depolanan verilerin konumunu etkilemez.

  • Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ye bağlanır ve daha sonra projeye eklediğiniz tüm uygulamalar otomatik olarak BigQuery'ye bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.

  • Firebase, verilerinizin BigQuery ile günlük senkronizasyonunu ayarlar.

    • Projenizi bağladıktan sonra, ilk veri kümenizin BigQuery'e aktarılması için genellikle bir sonraki günün senkronizasyonunu beklemeniz gerekir.

    • Günlük senkronizasyon, BigQuery'te ayarlamış olabileceğiniz planlı dışa aktarma işlemlerinden bağımsız olarak günde bir kez gerçekleşir. Senkronizasyon işinin zamanlamasının ve süresinin değişebileceğini unutmayın. Bu nedenle, yayın sonrası işlemleri veya işleri dışa aktarma işleminin belirli bir zamanlamasına göre planlamanızı önermeyiz.

  • Firebase, BigQuery'ye mevcut verilerinizin bir kopyasını dışa aktarır. Dışa aktarma işlemi için verilerin ilk yayılması 48 saati bulabilir.

    • Bu dışa aktarma işlemi, bağlı her uygulama için günlük senkronizasyondaki verileri içeren bir toplu tablo içerir.

    • Toplu tablo için son 30 güne kadar veri doldurma işlemlerini manuel olarak planlayabilir veya BigQuery'e dışa aktarma özelliğini etkinleştirdiğiniz en son tarihe kadar (hangisi daha yeniyse) planlayabilirsiniz.

    Crashlytics verilerinin dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz dışa aktarma özelliğini etkinleştirdiğiniz günden 30 gün öncesini de doldurabileceğinizi unutmayın.

  • Crashlytics akış dışa aktarma özelliğini BigQuery'e etkinleştirirseniz bağlı tüm uygulamalarda sürekli güncellenen verileri içeren bir gerçek zamanlı tablo da olur.

BigQuery'e dışa aktarma özelliğini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.

BigQuery alanına hangi veriler aktarılır?

Firebase Crashlytics verileri, firebase_crashlytics adlı bir BigQuery veri kümesine aktarılır. Varsayılan olarak, projenizdeki her uygulama için Crashlytics veri kümesi içinde ayrı tablolar oluşturulur. Firebase, tabloları uygulamanın tanımlayıcısına göre adlandırır. Noktalar alt çizgiye dönüştürülür ve sonuna bir platform adı eklenir.

Örneğin, com.google.test paket adına sahip bir Android uygulamasının verileri com_google_test_ANDROID adlı bir tabloda bulunur. Bu toplu tablo her gün bir kez güncellenir. Crashlytics akış dışa aktarma özelliğini BigQuery için etkinleştirirseniz Crashlytics verileri com_google_test_ANDROID_REALTIME adlı bir tabloya da anlık olarak aktarılır.

Tablodaki her satır, kilitlenmeler, kritik olmayan hatalar ve ANR'ler dahil olmak üzere uygulamada gerçekleşen bir etkinliği temsil eder.

Crashlytics akışını BigQuery'a aktarma

BigQuery Akış ile Crashlytics verilerinizi anlık olarak yayınlayabilirsiniz. Canlı veriler gerektiren herhangi bir amaç için (ör. canlı bir kontrol panelinde bilgi sunma, kullanıma sunma işlemini canlı izleme veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izleme) kullanabilirsiniz.

Crashlytics'e BigQuery akış dışa aktarma özelliğini etkinleştirdiğinizde, toplu tabloya ek olarak gerçek zamanlı bir tablo da elde edersiniz. Tablolar arasındaki farklar aşağıda belirtilmiştir:

Toplu tablo Anlık tablo
  • Veriler günde bir kez dışa aktarılır.
  • Etkinlikler, BigQuery'e toplu yazmadan önce kalıcı olarak saklanır.
  • Veriler, 30 güne kadar önceki tarihlere ait doldurulabilir*.
  • Veriler gerçek zamanlı olarak dışa aktarılır.
  • Eksik veriler doldurulmaz.

Etkinlikleri yazmadan önce kalıcı olarak depoladığımız ve 30 güne kadar* tabloya geri doldurulabildikleri için toplu tablo, uzun vadeli analizler yapmak ve zaman içindeki trendleri belirlemek için idealdir. Gerçek zamanlı tablonuza veri yazdığımızda verileri BigQuery'e hemen yazarız. Bu nedenle, canlı gösterge tabloları ve özel uyarılar için idealdir. Bu iki tablo, her ikisinin avantajlarından yararlanmak için birleştirme sorgusuyla birleştirilebilir.

Gerçek zamanlı tablonun varsayılan bölüm geçerlilik süresi 30 gündür. Bunu nasıl değiştireceğinizi öğrenmek için BigQuery dokümanlarında Bölümün geçerlilik süresini ayarlama bölümüne bakın.

* Yeni dışa aktarma altyapısına yükseltme bölümündeki ek bilgi bölümünde, doldurma desteği hakkında ayrıntılı bilgi edinin.

Crashlytics akışlarını BigQuery'a dışa aktarmayı etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

  2. BigQuery kartında Yönet'i tıklayın.

  3. Akışları dahil et onay kutusunu işaretleyin.

Bu işlem, bağlı tüm uygulamalarınızda akış özelliğini etkinleştirir.

Dışa aktarılan verilerle neler yapabilirsiniz?

BigQuery'e yapılan dışa aktarma işlemleri, cihaz türü, işletim sistemi, istisnalar (Android uygulamaları) veya hatalar (Apple uygulamaları) ve Crashlytics günlüklerinin yanı sıra diğer verileri içeren ham kilitlenme verilerini içerir.

Bu sayfanın ilerleyen bölümlerinde, hangi Crashlytics verilerinin dışa aktarıldığını ve tablo şema bilgilerini inceleyin.

Data Studio şablonu kullanma

Data Studio şablonunuzda gerçek zamanlı verileri etkinleştirmek için Dışa aktarılan Crashlytics verilerini Data Studio ile görselleştirme başlıklı makaledeki talimatları uygulayın.

Görünüm oluşturma

BigQuery kullanıcı arayüzünü kullanarak sorguları görünümlere dönüştürebilirsiniz. Ayrıntılı talimatlar için BigQuery dokümanlarında Görünüm oluşturma bölümüne bakın.

Sorguları çalıştırma

Aşağıdaki örneklerde, kilitlenme etkinliği verilerini daha kolay anlaşılır özetlerde toplayan raporlar oluşturmak için Crashlytics verileriniz üzerinde çalıştırabileceğiniz sorgular gösterilmektedir. Bu tür raporlar Firebase konsolunun Crashlytics kontrol panelinde bulunmadığından kilitlenme verilerini analiz etmenize ve anlamanıza yardımcı olabilir.

1. örnek: Güne göre kilitlenmeler

Mümkün olduğunca fazla hatayı düzeltmek için çalıştıktan sonra ekibinizin yeni fotoğraf paylaşım uygulamanızı kullanıma sunmaya hazır olduğunu düşünüyorsunuz. Bunu yapmadan önce, hata giderme çalışmanızın uygulamayı zaman içinde daha kararlı hale getirdiğinden emin olmak için son bir aydaki günlük kilitlenme sayısını kontrol etmek istiyorsunuz.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: En yaygın kilitlenme noktalarını bulma

Üretim planlarına uygun şekilde öncelik vermek için uygulamanızda en yaygın 10 kilitlenmeyi bulmak istersiniz. Alakalı veri noktalarını sağlayan bir sorgu oluşturursunuz.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: Kilitlenen ilk 10 cihaz

Sonbahar, yeni telefon sezonudur. Şirketiniz, bu durumun özellikle Android için yeni cihaza özgü sorunlar sezonu anlamına geldiğini de biliyor. Yaklaşan uyumluluk sorunlarını önlemek için, son bir haftada (168 saat) en çok kilitlenme yaşayan 10 cihazı tanımlayan bir sorgu oluşturursunuz.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. Örnek: Özel anahtara göre filtreleme

Oyununuzun hangi seviyesinde en çok kilitlenme yaşandığını öğrenmek isteyen bir oyun geliştiricisiniz.

Bu istatistiği izlemeye yardımcı olmak için current_level adlı bir özel Crashlytics anahtarı oluşturur ve kullanıcı yeni bir seviyeye her ulaştığında bu anahtarı güncellersiniz.

Swift

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

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

BigQuery'ye dışa aktardığınız bu anahtarla, her kilitlenme etkinliğiyle ilişkili current_level değerlerinin dağılımını bildirmek için bir sorgu yazabilirsiniz.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: Kullanıcı kimliği ayıklama

Erken erişim kapsamında bir Android uygulamanız var. Kullanıcılarınızın çoğu uygulamayı seviyor ancak üç kullanıcı alışılmadık sayıda kilitlenmeyle karşılaşmış. Sorunun temel nedenini bulmak için kullanıcı kimliklerini kullanarak bu kullanıcıların tüm kilitlenme etkinliklerini çeken bir sorgu yazarsınız.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: Belirli bir kilitlenme sorunuyla karşılaşan tüm kullanıcıları bulma

Ekibiniz, kritik bir hatayı yanlışlıkla bir beta test kullanıcısı grubuna yayınladı. Ekibiniz, belirli kilitlenme sorunu kimliğini belirlemek için yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanabildi. Ekibiniz şimdi bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: Kilitlenme sorunundan etkilenen kullanıcıların sayısı, ülkeye göre ayrılmış şekilde

Ekibiniz, yeni bir sürümün kullanıma sunulma sürecinde kritik bir hata tespit etti. Belirli bir kilitlenme sorununun kimliğini belirlemek için yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanabildiniz. Ekibimiz şimdi bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını öğrenmek istiyor.

Ekibinizin bu sorguyu yazması için aşağıdakileri yapması gerekir:

  1. Google Analytics verilerini BigQuery'ye aktarmayı etkinleştirin. Proje verilerini BigQuery'ye aktarma başlıklı makaleyi inceleyin.

  2. Uygulamanızı, hem Google Analytics SDK'sına hem de Crashlytics SDK'sına kullanıcı kimliği iletecek şekilde güncelleyin.

    Swift

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

    Objective-C

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

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Google Analytics veri kümesindeki etkinlikleri Crashlytics veri kümesindeki kilitlenmelerle birleştirmek için kullanıcı kimliği alanını kullanan bir sorgu yazın.

    Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

    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. Örnek: Bugüne kadarki en önemli 5 sorun

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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. örnek: Bugün dahil olmak üzere DATE tarihinden sonraki en önemli 5 sorun

Ayrıca, güvenilir toplu verilere anlık bilgiler eklemek için toplu ve anlık tabloları bir birleştirme sorgusuyla birleştirebilirsiniz. event_id birincil anahtar olduğundan, iki tablodaki ortak etkinlikleri tekilleştirmek için DISTINCT event_id'u kullanabilirsiniz.

Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS'ü (paket adı ve ANDROID yerine) kullanın.

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;

BigQuery'daki Crashlytics şemasını anlama

Crashlytics verilerini BigQuery'a aktarma işlemini ayarlarken Firebase, bağlantıdan iki gün öncesine kadarki etkinlikler de dahil olmak üzere son etkinlikleri (kilitlenmeler, kritik olmayan hatalar ve ANR'ler) dışa aktarır. Ayrıca, 30 güne kadar doldurma seçeneği de sunulur.

Bu noktadan itibaren, dışa aktarma işlemini devre dışı bırakana kadar Firebase Crashlytics etkinliklerini günlük olarak dışa aktarır. Her dışa aktarma işleminden sonra verilerin BigQuery'te kullanılabilir hale gelmesi birkaç dakika sürebilir.

Veri kümeleri

Crashlytics, Crashlytics verileri için BigQuery'te yeni bir veri kümesi oluşturur. Veri kümesi, birden fazla uygulamanız olsa bile projenizin tamamını kapsar.

Tablolar

Crashlytics, ilgili uygulamanın verilerini dışa aktarmayı devre dışı bırakmadığınız sürece projenizdeki her uygulama için veri kümesinde bir tablo oluşturur. Firebase, tabloları uygulamanın tanımlayıcısına göre adlandırır. Noktalar alt çizgiye dönüştürülür ve sonuna bir platform adı eklenir.

Örneğin, com.google.test paket adına sahip bir Android uygulamasının verileri com_google_test_ANDROID adlı bir tabloda, gerçek zamanlı veriler (etkinleştirildiyse) ise com_google_test_ANDROID_REALTIME adlı bir tabloda bulunur.

Tablolar, uygulamanızda tanımladığınız özel Crashlytics anahtarlarının yanı sıra standart bir Crashlytics veri grubu içerir.

Satırlar

Tablodaki her satır, uygulamanın karşılaştığı bir hatayı temsil eder.

Sütunlar

Tablodaki sütunlar kilitlenmeler, onarılabilir hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery'a akış dışa aktarma etkinse anlık tablo, toplu tabloyla aynı sütunlara sahip olur. Satırlarda yığın izlemesi olmayan etkinlikleri temsil eden sütunlar olabileceğini unutmayın.

Dışa aktarımdaki sütunlar bu tabloda listelenmektedir:

Alan adı Veri türü Açıklama
platform DİZE Firebase projesine kayıtlı uygulama platformu (geçerli değerler: IOS veya ANDROID)
bundle_identifier DİZE Firebase projesine kaydedilen uygulamanın benzersiz tanımlayıcısıdır (ör. com.google.gmail)
Apple platform uygulamalarında bu, uygulamanın paket kimliğidir.
Android uygulamalarında bu, uygulamanın paket adıdır.
event_id DİZE Etkinliğin benzersiz kimliği
is_fatal BOOLE Uygulamanın kilitlenip kilitlenmediği
error_type DİZE Etkinliğin hata türü (ör. FATAL, NON_FATAL, ANR vb.)
issue_id DİZE Etkinlikle ilişkili sorun
variant_id DİZE Bu etkinlikle ilişkili sorun varyantı
Tüm etkinliklerin ilişkili bir sorun varyantına sahip olmadığını unutmayın.
event_timestamp ZAMAN DAMGASI Etkinliğin gerçekleştiği zaman
device KAYIT Etkinliğin gerçekleştiği cihaz
device.manufacturer DİZE Cihaz üreticisi
device.model DİZE Cihaz modeli
device.architecture DİZE Örneğin, X86_32, X86_64, ARMV7, ARM64, ARMV7S veya ARMV7K
memory KAYIT Cihazın bellek durumu
memory.used INT64 Kullanılan bellek baytları
memory.free INT64 Kalan bellek miktarı (bayt)
storage KAYIT Cihazın kalıcı depolama alanı
storage.used INT64 Kullanılan depolama alanı bayt sayısı
storage.free INT64 Kalan depolama alanı (bayt)
operating_system KAYIT Cihazdaki işletim sisteminin ayrıntıları
operating_system.display_version DİZE Cihazdaki işletim sistemi sürümü
operating_system.name DİZE Cihazdaki işletim sisteminin adı
operating_system.modification_state DİZE Cihazın değiştirilip değiştirilmediği (ör. jailbreak'li uygulama MODIFIED, rootlanmış uygulama UNMODIFIED olur)
operating_system.type DİZE (Yalnızca Apple uygulamaları) Cihazdaki işletim sisteminin türü (ör. IOS, MACOS vb.)
operating_system.device_type DİZE Cihaz türü (ör. MOBILE, TABLET, TV vb.); "cihaz kategorisi" olarak da bilinir
application KAYIT Etkinliği oluşturan uygulama
application.build_version DİZE Uygulamanın derleme sürümü
application.display_version DİZE
user KAYIT (İsteğe bağlı) Uygulamanın kullanıcısı hakkında toplanan bilgiler
user.name DİZE (İsteğe bağlı) Kullanıcının adı
user.email DİZE (İsteğe bağlı) Kullanıcının e-posta adresi
user.id DİZE (İsteğe bağlı) Kullanıcıyla ilişkilendirilmiş uygulamaya özel kimlik
custom_keys TEKRAR KAYIT Geliştirici tarafından tanımlanan anahtar/değer çiftleri
custom_keys.key DİZE Geliştirici tarafından tanımlanan bir anahtar
custom_keys.value DİZE Geliştirici tarafından tanımlanan bir değer
installation_uuid DİZE Benzersiz bir uygulama ve cihaz yüklemesini tanımlayan kimlik
crashlytics_sdk_versions DİZE Etkinliği oluşturan Crashlytics SDK sürümü
app_orientation DİZE Örneğin, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN vb.
device_orientation DİZE Örneğin, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN vb.
process_state DİZE BACKGROUND veya FOREGROUND
logs TEKRAR KAYIT Etkinleştirildiyse Crashlytics günlükleyici tarafından oluşturulan zaman damgalı günlük mesajları
logs.timestamp ZAMAN DAMGASI Günlüğün oluşturulduğu tarih
logs.message DİZE Günlüğe kaydedilen mesaj
breadcrumbs TEKRAR KAYIT Etkinleştirildiyse zaman damgalı Google Analytics içerik haritaları
breadcrumbs.timestamp ZAMAN DAMGASI Gezinme menüsüyle ilişkili zaman damgası
breadcrumbs.name DİZE Gezinme menüsüyle ilişkili ad
breadcrumbs.params TEKRAR KAYIT Sayfa yolu ile ilişkili parametreler
breadcrumbs.params.key DİZE Gezinme menüsüyle ilişkili bir parametre anahtarı
breadcrumbs.params.value DİZE Gezinme menüsüyle ilişkili bir parametre değeri
blame_frame KAYIT Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve
blame_frame.line INT64 Çerçevenin dosyasının satır numarası
blame_frame.file DİZE Çerçeve dosyasının adı
blame_frame.symbol DİZE Sulandırılmış simgesi veya sulandırılamayansa ham simgesi
blame_frame.offset INT64 Kodu içeren ikili görüntüdeki bayt ofseti
Java istisnaları için ayarlanmamış
blame_frame.address INT64 Kodu içeren ikili resimdeki adres
Java çerçeveleri için ayarlanmadı
blame_frame.library DİZE Çerçeveyi içeren kitaplığın görünen adı
blame_frame.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
blame_frame.blamed BOOLE Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi
exceptions TEKRAR KAYIT (Yalnızca Android) Bu etkinlik sırasında gerçekleşen istisnalar. İç içe yerleştirilmiş istisnalar, kronolojik olarak ters sırada sunulur. Yani son kayıt, oluşturulan ilk istisnadır.
exceptions.type DİZE İstisna türü (örneğin, java.lang.IllegalStateException)
exceptions.exception_message DİZE İstisnayla ilişkili bir mesaj
exceptions.nested BOOLE Son oluşturulan istisna dışındaki tüm değerler için doğrudur (yani ilk kayıt).
exceptions.title DİZE İleti dizisinin başlığı
exceptions.subtitle DİZE İleti dizisinin alt başlığı
exceptions.blamed BOOLE Crashlytics, hatadan veya kilitlenmeden istisna sorumlu olduğunu belirlerse doğru değerini döndürür.
exceptions.frames TEKRAR KAYIT İstisnayla ilişkili kareler
exceptions.frames.line INT64 Çerçevenin dosyasının satır numarası
exceptions.frames.file DİZE Çerçeve dosyasının adı
exceptions.frames.symbol DİZE Sulandırılmış simgesi veya sulandırılamayansa ham simgesi
exceptions.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt ofseti
Java istisnaları için ayarlanmamış
exceptions.frames.address INT64 Kodu içeren ikili resimdeki adres
Java çerçeveleri için ayarlanmadı
exceptions.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
exceptions.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
exceptions.frames.blamed BOOLE Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi
error TEKRAR KAYIT (Yalnızca Apple uygulamaları) önemli olmayan hatalar
error.queue_name DİZE Mesaj dizisinin çalıştığı sıra
error.code INT64 Uygulamanın özel olarak günlüğe kaydedilen NSError ile ilişkili hata kodu
error.title DİZE İleti dizisinin başlığı
error.subtitle DİZE İleti dizisinin alt başlığı
error.blamed BOOLE Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi
error.frames TEKRAR KAYIT Yığın izlemenin çerçeveleri
error.frames.line INT64 Çerçevenin dosyasının satır numarası
error.frames.file DİZE Çerçeve dosyasının adı
error.frames.symbol DİZE Sulandırılmış simgesi veya sulandırılamayansa ham simgesi
error.frames.offset INT64 Kodu içeren ikili resimdeki bayt ofseti
error.frames.address INT64 İkili resimde kodu içeren adres
error.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
error.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
error.frames.blamed BOOLE Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi
threads TEKRAR KAYIT Etkinlik sırasında mevcut olan mesaj dizileri
threads.crashed BOOLE Mesaj dizisinin kilitlenip kilitlenmediği
threads.thread_name DİZE İleti dizisinin adı
threads.queue_name DİZE (Yalnızca Apple uygulamaları) İleti dizisinin çalıştığı sıra
threads.signal_name DİZE Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca kilitlenen yerel mesaj dizilerinde bulunur.
threads.signal_code DİZE Uygulamanın çökmesine neden olan sinyalin kodu; yalnızca çöken yerel mesaj dizilerinde bulunur
threads.crash_address INT64 Uygulamanın kilitlenmesine neden olan sinyalin adresi. Yalnızca kilitlenen yerel mesaj dizilerinde bulunur.
threads.code INT64 (Yalnızca Apple uygulamaları) Uygulamanın özel olarak günlüğe kaydedilen NSError hata kodu
threads.title DİZE İleti dizisinin başlığı
threads.subtitle DİZE İleti dizisinin alt başlığı
threads.blamed BOOLE Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi
threads.frames TEKRAR KAYIT Mesaj dizisinin kareleri
threads.frames.line INT64 Çerçevenin dosyasının satır numarası
threads.frames.file DİZE Çerçeve dosyasının adı
threads.frames.symbol DİZE Sulandırılmış simgesi veya sulandırılamayansa ham simgesi
threads.frames.offset INT64 Kodu içeren ikili resimdeki bayt ofseti
threads.frames.address INT64 İkili resimde kodu içeren adres
threads.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
threads.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
threads.frames.blamed BOOLE Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi
unity_metadata.unity_version DİZE Bu cihazda çalışan Unity sürümü
unity_metadata.debug_build BOOLE Bu bir hata ayıklama derlemesiyse
unity_metadata.processor_type DİZE İşlemcinin türü
unity_metadata.processor_count INT64 İşlemci (çekirdek) sayısı
unity_metadata.processor_frequency_mhz INT64 İşlemcilerin MHz cinsinden frekansı
unity_metadata.system_memory_size_mb INT64 Sistem belleğinin boyutu (Mb cinsinden)
unity_metadata.graphics_memory_size_mb INT64 MB cinsinden ekran kartı belleği
unity_metadata.graphics_device_id INT64 Grafik cihazının tanımlayıcısı
unity_metadata.graphics_device_vendor_id INT64 Grafik işlemcinin tedarikçisinin tanımlayıcısıdır.
unity_metadata.graphics_device_name DİZE Grafik cihazının adı
unity_metadata.graphics_device_vendor DİZE Grafik cihazının tedarikçisi
unity_metadata.graphics_device_version DİZE Grafik cihazının sürümü
unity_metadata.graphics_device_type DİZE Grafik cihazının türü
unity_metadata.graphics_shader_level INT64 Grafiklerin gölgelendirici seviyesi
unity_metadata.graphics_render_target_count INT64 Grafik oluşturma hedeflerinin sayısı
unity_metadata.graphics_copy_texture_support DİZE Unity API'de tanımlandığı şekilde grafik dokusunun kopyalanması desteği
unity_metadata.graphics_max_texture_size INT64 Doku oluşturmaya ayrılmış maksimum boyut
unity_metadata.screen_size_px DİZE Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilir)
unity_metadata.screen_resolution_dpi DİZE Ekranın DPI'si (kayan nokta sayısı)
unity_metadata.screen_refresh_rate_hz INT64 Ekranın yenileme hızı (Hz)

Dışa aktarılan Crashlytics verilerini Data Studio ile görselleştirme

Google Data Studio, BigQuery'daki Crashlytics veri kümelerinizi okunması ve paylaşılması daha kolay, tamamen özelleştirilebilen raporlara dönüştürür.

Data Studio'yu kullanma hakkında daha fazla bilgi edinmek için Data Studio'ya hoş geldiniz başlıklı Data Studio hızlı başlangıç kılavuzunu deneyin.

Crashlytics rapor şablonu kullanma

Data Studio'da, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren Crashlytics için örnek bir rapor bulunur. Crashlytics'ten BigQuery'e akış dışa aktarma özelliğini etkinleştirdiyseniz bu verileri Data Studio şablonunun Anlık trendler sayfasında görüntüleyebilirsiniz.Kendi uygulamanızın ham kilitlenme verilerine göre hızlıca yeni raporlar ve görselleştirmeler oluşturmak için örneği şablon olarak kullanabilirsiniz:

  1. Crashlytics Data Studio kontrol paneli şablonunu açın.

  2. Sağ üst köşedeki Şablonu Kullan'ı tıklayın.

  3. Yeni Veri Kaynağı açılır listesinde Yeni Veri Kaynağı Oluştur'u seçin.

  4. BigQuery kartında Seç'i tıklayın.

  5. Projelerim > PROJECT_ID > firebase_crashlytics > TABLE_NAME'ı seçerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin.

    Toplu tablonuz her zaman seçilebilir durumdadır. CrashlyticsBigQuery'a akış dışa aktarma etkinse bunun yerine gerçek zamanlı tablonuzu seçebilirsiniz.

  6. Yapılandırma bölümünde Crashlytics Şablon düzeyi'ni Varsayılan olarak ayarlayın.

  7. Yeni veri kaynağını oluşturmak için Bağlan'ı tıklayın.

  8. Crashlytics şablonuna dönmek için Rapora ekle'yi tıklayın.

  9. Son olarak, CrashlyticsData Studio kontrol paneli şablonunun kopyasını oluşturmak için Rapor Oluştur'u tıklayın.

Yeni dışa aktarma altyapısına geçiş

Ekim 2024'ün ortalarında Crashlytics, Crashlytics verilerini BigQuery'a aktarmak için yeni bir altyapı kullanıma sundu. Şu anda bu yeni altyapıya geçmek isteğe bağlıdır.

Bu yeni altyapı, Amerika Birleşik Devletleri dışındaki Crashlytics veri kümesi konumlarını destekler.

  • Dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz dilerseniz veri dışa aktarma konumunu BigQuery tarafından desteklenen herhangi bir veri kümesi konumuyla değiştirebilirsiniz.

  • Dışa aktarmayı Ekim 2024'ün ortalarında veya daha sonra etkinleştirdiyseniz kurulum sırasında BigQuery tarafından desteklenen herhangi bir veri kümesi konumunu seçebilirsiniz.

Yeni altyapıdaki bir diğer fark da, dışa aktarma özelliğini etkinleştirmeden önceki verileri doldurmayı desteklememesidir. (Eski altyapıda, etkinleştirme tarihinden 30 gün öncesine kadar geriye dönük doldurma işlemi yapabilirsiniz.) Yeni altyapı, son 30 güne kadar doldurma veya BigQuery'e dışa aktarma özelliğini etkinleştirdiğiniz en son tarihe kadar (hangisi daha yeniyse) doldurma işlemlerini destekler.

Yükseltme için ön koşul

Yeni altyapıya geçmeden önce aşağıdaki ön koşulu karşıladığınızı onaylayın: Mevcut toplu BigQuery tablolarınız, kayıtlı Firebase uygulamalarınız için ayarlanan paket kimlikleriyle veya paket adlarıyla eşleşen tanımlayıcılara sahiptir.

Örneğin:

  • com_yourcompany_yourproject_IOS adlı bir BigQuery tablonuz varsa Firebase projenize com.yourcompany.yourproject paket kimliğiyle kayıtlı bir Firebase iOS+ uygulamanız olmalıdır.

  • com_yourcompany_yourproject_ANDROID adlı bir BigQuery tablonuz varsa Firebase projenize com.yourcompany.yourproject paket adıyla kayıtlı bir Firebase Android uygulamanız olmalıdır.

Firebase projenize kayıtlı tüm Firebase uygulamalarını bulmak için:

  1. Firebase konsolunda, Proje ayarlarınıza gidin.

  2. Uygulamalarınız kartına gidin ve ardından kimliği de dahil olmak üzere uygulamanın bilgilerini görüntülemek için istediğiniz Firebase uygulamasını tıklayın.

Yeni dışa aktarma altyapısı, her uygulamanın verilerini kayıtlı Firebase uygulaması için ayarlanan paket adına veya paket kimliğine göre dışa aktarır. BigQuery iş akışınızın kesintiye uğramaması için mevcut toplu tablolarınızın doğru adlara sahip olduğundan emin olmanız önemlidir. Böylece yeni altyapı, tüm yeni verileri mevcut tablolara ekleyebilir. Kayıtlı Firebase uygulamalarınızla eşleşmeyen toplu tablo adlarınız varsa ancak yine de yükseltme yapmak istiyorsanız Firebase Destek Ekibi ile iletişime geçin.

Yeni altyapıya geçme

Dışa aktarma özelliğini zaten etkinleştirdiyseniz Crashlytics veri dışa aktarma özelliğini Firebase konsolunda kapatıp tekrar açarak yeni altyapıya geçebilirsiniz.

Ayrıntılı adımlar aşağıda verilmiştir:

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

  2. BigQuery kartında Yönet'i tıklayın.

  3. Dışa aktarmayı devre dışı bırakmak için Crashlytics kaydırma çubuğunu kapatın. İstendiğinde, veri dışa aktarma işlemini durdurmak istediğinizi onaylayın.

  4. Dışa aktarma özelliğini yeniden etkinleştirmek için Crashlytics kaydırma çubuğunu hemen tekrar açın. İstendiğinde verileri dışa aktarmak istediğinizi onaylayın.

    Crashlytics verilerini BigQuery'a dışa aktarma işleminiz artık yeni dışa aktarma altyapısını kullanıyor.