Firebase Crashlytics verilerini BigQuery'ye aktarma

Firebase Crashlytics verilerinizi daha ayrıntılı analiz için BigQuery'ye 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 için kullanmanıza olanak tanır.

BigQuery biçimine dışa aktarmayı etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

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

  3. BigQuery'a dışa aktarmayı etkinleştirmek için ekrandaki talimatları uygulayın.

    BigQuery içinde Crashlytics verilerinize neredeyse anlık erişmek istiyorsanız akışla dışa aktarma'ya yükseltmeyi düşünebilirsiniz.

Dışa aktarmayı 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 veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturma). Daha fazla bilgi için Mevcut dışa aktarma işlemlerinin konumunu değiştirme başlıklı makaleyi inceleyin.

    Bu konum yalnızca BigQuery'ya 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'ya bağlanır. Daha sonra projeye eklediğiniz tüm uygulamalar da otomatik olarak BigQuery'ya bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.

  • Firebase, verilerinizin BigQuery ile günlük olarak senkronize edilmesini sağlar.

    • Projenizi bağladıktan sonra, ilk veri grubunuzun BigQuery'ya aktarılması için genellikle ertesi günkü senkronizasyona kadar beklemeniz gerekir.

    • Günlük senkronizasyon, BigQuery'da ayarlamış olabileceğiniz planlanmış dışa aktarma işlemlerinden bağımsız olarak günde bir kez gerçekleşir. Senkronizasyon işinin zamanlaması ve süresinin değişebileceğini unutmayın. Bu nedenle, dışa aktarma işleminin belirli bir zamanlamasına göre sonraki işlemlerin veya işlerin planlanması önerilmez.

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

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

    • Toplu iş tablosu için BigQuery'e dışa aktarmayı etkinleştirdiğiniz en son tarihe (hangisi daha yakınsa) kadar manuel olarak veri geri doldurma işlemleri planlayabilirsiniz veya son 30 güne kadar.

    Ekim 2024'ün ortasından önce Crashlytics verilerinin dışa aktarılmasını etkinleştirdiyseniz dışa aktarmayı etkinleştirdiğiniz günden önceki 30 günü de doldurabileceğinizi unutmayın.

  • CrashlyticsBigQuery için akış dışa aktarmayı Crashlyticsetkinleştirirseniz bağlı tüm uygulamalarda sürekli güncellenen verileri içeren bir gerçek zamanlı tablo da bulunur.

BigQuery'a dışa aktarmayı devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.

BigQuery hizmetine hangi veriler dışa aktarılır?

Firebase Crashlytics verileri, firebase_crashlytics adlı BigQuery veri kümesine aktarılır. Varsayılan olarak, projenizdeki her uygulama için Crashlytics veri kümesinde 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 platform adı eklenir.

Örneğin, paket adı com.google.test olan bir Android uygulamasına ait veriler com_google_test_ANDROID adlı bir tabloda yer alır. Bu toplu tablo günde bir kez güncellenir. Crashlytics akış dışa aktarma seçeneğini etkinleştirirseniz BigQuery, Crashlytics verileri de anlık olarak com_google_test_ANDROID_REALTIME adlı bir tabloya aktarılır.

Tablodaki her satır, uygulamada meydana gelen bir etkinliği (kilitlenmeler, onarılabilir hatalar ve ANR'ler dahil) temsil eder.

Crashlytics akışını BigQuery konumuna aktarma

BigQuery akışı ile Crashlytics verilerinizi gerçek zamanlı olarak yayınlayabilirsiniz. Canlı verilerin gerekli olduğu her amaç için kullanabilirsiniz. Örneğin, bilgileri canlı bir kontrol panelinde sunma, kullanıma sunma sürecini canlı olarak izleme veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izleme gibi.

Crashlytics Akış dışa aktarma BigQuery özelliğini etkinleştirdiğinizde, toplu tabloya ek olarak gerçek zamanlı bir tablonuz da olur. Tablolar arasındaki farklar aşağıda belirtilmiştir:

Toplu iş tablosu Anlık tablo
  • Veriler günde bir kez dışa aktarılır.
  • Etkinlikler, BigQuery'ya toplu olarak yazılmadan önce kalıcı olarak depolanır.
  • Veriler, 30 gün öncesine kadar geri doldurulabilir*.
  • Veriler anlık olarak dışa aktarılır.
  • Geri doldurma kullanılamaz.

Toplu iş tablosu, etkinlikleri yazmadan önce kalıcı olarak sakladığımız ve 30 güne kadar tabloya geri doldurabildiğimiz için uzun vadeli analiz ve zaman içindeki trendleri belirlemek için idealdir*. Verileri anlık tablonuza yazdığımızda bunları hemen BigQuery konumuna 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.

Varsayılan olarak, anlık tablo 30 günlük bir bölüm geçerlilik süresine sahiptir. Bunu nasıl değiştireceğinizi öğrenmek için BigQuery dokümanlarındaki Bölümün geçerlilik bitimini ayarlama başlıklı makaleyi inceleyin.

* Yedek reklam desteğiyle ilgili ayrıntıları Yeni dışa aktarma altyapısına yükseltme başlıklı makalede bulabilirsiniz.

Crashlytics akışının BigQuery'e dışa aktarılmasını etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

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

  3. Yayınları dahil et onay kutusunu işaretleyin.

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

Dışa aktarılan verilerle neler yapabilirsiniz?

BigQuery dışa aktarma işlemlerinde cihaz türü, işletim sistemi, istisnalar (Android uygulamaları) veya hatalar (Apple uygulamaları) ve Crashlytics günlükleri dahil olmak üzere ham kilitlenme verileri ve diğer veriler yer alır.

Hangi Crashlytics verilerin dışa aktarıldığını ve tablo şemasını bu sayfanın ilerleyen kısımlarında 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 belgelerindeki Görünüm oluşturma başlıklı makaleyi inceleyin.

Sorguları çalıştırma

Aşağıdaki örneklerde, kilitlenme etkinliği verilerini daha kolay anlaşılır özetler halinde toplayan raporlar oluşturmak için Crashlytics verilerinizde çalıştırabileceğiniz sorgular gösterilmektedir. Bu tür raporlar Firebase konsolunun Crashlytics kontrol panelinde kullanılamadığından, kilitlenme verilerinin analizini ve anlaşılmasını destekleyebilir.

1. örnek: Günlük kilitlenme sayısı

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

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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 kilitlenmeleri bulma

Üretim planlarına doğru şekilde öncelik vermek için uygulamanızdaki en yaygın 10 kilitlenmeyi bulmak istiyorsunuz. İlgili veri noktalarını sağlayan bir sorgu oluşturuyorsunuz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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: En çok kilitlenen 10 cihaz

Sonbahar, yeni telefon sezonu! Şirketiniz, bu durumun özellikle Android'de yeni cihaza özgü sorunların yaşanabileceği bir dönem olduğunu da biliyor. Yaklaşan uyumluluk sorunlarını önlemek için geçen hafta (168 saat) en çok kilitlenen 10 cihazı belirleyen bir sorgu oluşturdunuz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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ı olması için current_level adlı bir özel Crashlytics anahtar ayarlarsınız ve kullanıcı yeni bir seviyeye 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);

Dışa aktarma işleminizde bu anahtarı kullanarak BigQuery, her kilitlenme etkinliğiyle ilişkili current_level değerlerinin dağılımını bildiren bir sorgu yazabilirsiniz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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: User-ID'yi ayıklama

Erken erişim aşamasında olan bir Android uygulamanız var. Kullanıcılarınızın çoğu bu sürümü beğeniyor ancak üç kullanıcı, alışılmadık sayıda kilitlenme sorunu yaşıyor. Sorunun kaynağını bulmak için bu kullanıcıların kullanıcı kimliklerini kullanarak bu kullanıcılarla ilgili tüm kilitlenme etkinliklerini çeken bir sorgu yazarsınız.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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, beta test kullanıcılarından oluşan bir gruba yanlışlıkla kritik bir hata içeren sürüm yayınladı. Ekibiniz, yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildi. Şimdi ekibiniz, bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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ı sayısı (ülkeye göre ayrılmış)

Ekibiniz, yeni bir sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildiniz. Ekibiniz, bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını görmek istiyor.

Bu sorguyu yazmak için ekibinizin aşağıdakileri yapması gerekir:

  1. Google Analytics verilerinin BigQuery'ye aktarılmasını 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 sorgu aşağıda verilmiştir. iOS uygulaması için paket adı ve ANDROID yerine paket kimliği ve IOS 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ün şu ana kadar karşılaşılan en büyük 5 sorun

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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 beri en sık karşılaşılan 5 sorun

Güvenilir toplu verilere gerçek zamanlı bilgiler eklemek için toplu ve gerçek zamanlı tabloları birleştirme sorgusuyla da birleştirebilirsiniz. event_id birincil anahtar olduğundan, iki tablodaki ortak etkinlikleri tekilleştirmek için DISTINCT event_id kullanabilirsiniz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS 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;

Crashlytics şemasını anlama BigQuery

Crashlytics veri dışa aktarma işlemini BigQuery olarak ayarladığınızda Firebase, bağlantıdan önceki iki güne kadar olan etkinlikler de dahil olmak üzere son etkinlikleri (kilitlenmeler, ölümcül olmayan hatalar ve ANR'ler) dışa aktarır. 30 güne kadar geri doldurma seçeneği de sunulur.

Bu andan dışa aktarma işlemini devre dışı bırakana kadar Firebase, etkinlikleri Crashlytics günlük olarak dışa aktarır. Her dışa aktarma işleminden sonra verilerin BigQuery'da kullanılabilir hâle gelmesi birkaç dakika sürebilir.

Veri kümeleri

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

Tablolar

Crashlytics, söz konusu uygulamanın verilerini dışa aktarmayı devre dışı bırakmadıysanız 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 platform adı eklenir.

Örneğin, com.google.test paket adına sahip bir Android uygulamasına ait veriler com_google_test_ANDROID adlı bir tabloda, etkinleştirilmişse anlık veriler ise com_google_test_ANDROID_REALTIME adlı bir tabloda yer alır.

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

Satırlar

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

Sütunlar

Bir tablodaki sütunlar kilitlenmeler, onarılabilir hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery konumuna akış dışa aktarma etkinleştirildiyse anlık tablo, toplu tabloyla aynı sütunlara sahip olur. Satırlarda, yığın izleri 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 Uygulamanın Firebase projesine kayıtlı olduğu platform (geçerli değerler: IOS veya ANDROID)
bundle_identifier DİZE Uygulamanın Firebase projesine kaydedilirken kullanılan benzersiz tanımlayıcısı (örneğin, com.google.gmail)
Apple platformu uygulamaları için bu, uygulamanın paket kimliğidir.
Android uygulamaları için 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ı 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 baytı
storage KAYIT Cihazın kalıcı depolama alanı
storage.used INT64 Kullanılan depolama alanı (bayt)
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 sisteminin 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 bir uygulama MODIFIED, rootlanmış bir uygulama ise UNMODIFIED)
operating_system.type DİZE (Yalnızca Apple uygulamaları) Cihazda çalışan işletim sisteminin türü (ör. IOS, MACOS vb.)
operating_system.device_type DİZE Cihaz türü (örneğin, 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ı) Uygulama 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şkili uygulamaya özel kimlik
custom_keys REPEATED RECORD 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 REPEATED RECORD Etkinleştirilmişse Crashlytics kaydedicisi tarafından oluşturulan zaman damgalı günlük mesajları
logs.timestamp ZAMAN DAMGASI Günlüğün oluşturulduğu zaman
logs.message DİZE Günlüğe kaydedilen mesaj
breadcrumbs REPEATED RECORD Etkinleştirilmişse zaman damgalı Google Analytics içerik haritaları
breadcrumbs.timestamp ZAMAN DAMGASI İçerik haritasıyla ilişkili zaman damgası
breadcrumbs.name DİZE İçerik haritasıyla ilişkili ad
breadcrumbs.params REPEATED RECORD Ekmek kırıntısıyla ilişkili parametreler
breadcrumbs.params.key DİZE Ekmek kırıntısıyla ilişkili bir parametre anahtarı
breadcrumbs.params.value DİZE Ekmek kırıntısıyla 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 Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
blame_frame.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
Java istisnaları için ayarlanmamış
blame_frame.address INT64 Kodu içeren ikili görüntüdeki adres
Java çerçeveleri için ayarlanmamış
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, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
exceptions REPEATED RECORD (Yalnızca Android) Bu etkinlik sırasında oluşan istisnalar. İç içe yerleştirilmiş istisnalar, ters kronolojik sırayla sunulur. Bu nedenle, 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 atılan istisna (yani ilk kayıt) hariç tümü için doğrudur.
exceptions.title DİZE İleti dizisinin başlığı
exceptions.subtitle DİZE İleti dizisinin alt başlığı
exceptions.blamed BOOLE Crashlytics, istisnanın hataya veya kilitlenmeye neden olduğunu belirlerse doğru
exceptions.frames REPEATED RECORD İstisnayla ilişkili çerçeveler
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 Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
exceptions.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
Java istisnaları için ayarlanmamış
exceptions.frames.address INT64 Kodu içeren ikili görüntüdeki adres
Java çerçeveleri için ayarlanmamış
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, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
error REPEATED RECORD (Yalnızca Apple uygulamaları) Önemli olmayan hatalar
error.queue_name DİZE İş parçacığının üzerinde çalıştığı sıra
error.code INT64 Uygulamanın özel olarak 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 bu karenin hatanın nedeni olduğunu belirledi mi?
error.frames REPEATED RECORD Yığın izlemesinin ç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 Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
error.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
error.frames.address INT64 Kodu içeren ikili resimdeki 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 bu karenin hatanın nedeni olduğunu belirledi mi?
threads REPEATED RECORD Etkinlik sırasında mevcut olan ileti dizileri
threads.crashed BOOLE İş parçacığının kilitlenip kilitlenmediği
threads.thread_name DİZE İleti dizisinin adı
threads.queue_name DİZE (Yalnızca Apple uygulamaları) İşlemin üzerinde çalıştığı sıra
threads.signal_name DİZE Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca kilitlenen yerel iş parçacıklarında bulunur.
threads.signal_code DİZE Uygulamanın kilitlenmesine neden olan sinyalin kodu; yalnızca kilitlenen yerel iş parçacıklarında bulunur.
threads.crash_address INT64 Uygulamanın çökmesine neden olan sinyalin adresi; yalnızca çöken yerel iş parçacıklarında bulunur.
threads.code INT64 (Yalnızca Apple uygulamaları) Uygulamanın özel olarak kaydedilmiş NSError'ının hata kodu
threads.title DİZE İleti dizisinin başlığı
threads.subtitle DİZE İleti dizisinin alt başlığı
threads.blamed BOOLE Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
threads.frames REPEATED RECORD İş parçacığının çerçeveleri
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 Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
threads.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
threads.frames.address INT64 Kodu içeren ikili resimdeki 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 bu karenin hatanın nedeni olduğunu belirledi mi?
unity_metadata.unity_version DİZE Bu cihazda çalışan Unity sürümü
unity_metadata.debug_build BOOLE Bu bir hata ayıklama derlemesi ise
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 frekansı(MHz)
unity_metadata.system_memory_size_mb INT64 Sistemin belleğinin boyutu (Mb cinsinden)
unity_metadata.graphics_memory_size_mb INT64 MB cinsinden grafik 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ı
unity_metadata.graphics_device_name DİZE Grafik cihazının adı
unity_metadata.graphics_device_vendor DİZE Grafik cihazının satıcısı
unity_metadata.graphics_device_version DİZE Grafik cihazı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 düzeyi
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 dokusunu kopyalama desteği
unity_metadata.graphics_max_texture_size INT64 Doku oluşturmaya ayrılan maksimum boyut
unity_metadata.screen_size_px DİZE Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilmiş)
unity_metadata.screen_resolution_dpi DİZE Ekranın DPI'si (kayan nokta sayısı olarak)
unity_metadata.screen_refresh_rate_hz INT64 Ekranın Hz cinsinden yenileme hızı



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

Google Data Studio, Crashlytics veri kümelerinizi BigQuery 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 hızlı başlangıç kılavuzu Data Studio'ya Hoş Geldiniz'i inceleyin.

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'e BigQuery akışla dışa aktarma özelliğini etkinleştirdiyseniz bu verileri Data Studio şablonunun Anlık trendler sayfasında görüntüleyebilirsiniz.Örnek raporu, kendi uygulamanızın ham kilitlenme verilerine dayalı olarak hızlı bir şekilde yeni raporlar ve görselleştirmeler oluşturmak için ş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'i seçerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin.

    Toplu işlem tablonuz her zaman seçilebilir. Crashlytics BigQuery akış dışa aktarma etkinleştirildiyse 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, Crashlytics Data Studio kontrol paneli şablonunun kopyasını oluşturmak için Rapor Oluştur'u tıklayın.



Yeni dışa aktarma altyapısına yükseltme

Crashlytics, Ekim 2024'ün ortalarında Crashlytics verilerinin BigQuery'ye toplu dışa aktarımı için yeni bir altyapı kullanıma sundu.

Tüm Firebase projeleri, 15 Eylül 2025'ten itibaren yeni toplu dışa aktarma altyapısına otomatik olarak yükseltilecek. Bu tarihten önce yükseltme yapabilirsiniz ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.

Yeni altyapıya geçebilirsiniz. Ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.

Yeni altyapıda olup olmadığınızı belirleme

Toplu dışa aktarma özelliğini Ekim 2024'ün ortasında veya daha sonra etkinleştirdiyseniz Firebase projeniz yeni dışa aktarma altyapısını otomatik olarak kullanır.

Projenizin hangi altyapıyı kullandığını kontrol edebilirsiniz: Google Cloud konsoluna gidin. "Veri aktarımı yapılandırmanız" Firebase Crashlytics with Multi-Region Support olarak etiketlenmişse projeniz yeni dışa aktarma altyapısını kullanıyor demektir.

Eski dışa aktarma altyapısı ile yeni dışa aktarma altyapısı arasındaki önemli farklar

  • Yeni altyapı, Crashlytics veri kümesi konumlarını destekler.

    • Ekim 2024'ün ortalarından önce dışa aktarma etkinleştirildi ve yeni dışa aktarma altyapısına yükseltildi: Artık isteğe bağlı olarak veri dışa aktarma konumunu değiştirebilirsiniz.

    • Dışa aktarma, Ekim 2024'ün ortasında veya daha sonra etkinleştirildi: Kurulum sırasında veri dışa aktarma için bir konum seçmeniz istendi.

  • Yeni altyapı, dışa aktarmayı etkinleştirmeden önceki verilerin geri doldurulmasını desteklemez.

    • Eski altyapı, dışa aktarmayı etkinleştirdiğiniz tarihten önceki 30 güne kadar geri doldurmayı destekliyordu.

    • Yeni altyapı, son 30 güne kadar geri doldurma işlemlerini veya dışa aktarma özelliğini etkinleştirdiğiniz en son tarihi (hangisi daha yakınsa) destekler.BigQuery

  • Yeni altyapı, BigQuery toplu tabloları, Firebase projenizdeki Firebase uygulamalarınız için ayarlanan tanımlayıcıları kullanarak adlandırır.

    • Eski altyapı, verileri uygulamanızın kod tabanındaki Firebase yapılandırmasında paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazıyordu.

    • Yeni altyapı, verileri Firebase projenizde kayıtlı Firebase uygulamalarınız için ayarlanan paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazar.

1. adım: Yükseltme için ön koşul

  1. Mevcut BigQuery toplu işlem tablolarınızın, Firebase projenizdeki kayıtlı Firebase uygulamalarınız için ayarlanan paket kimlikleri veya paket adlarıyla eşleşen tanımlayıcılar kullandığını kontrol edin. Eşleşmezlerse dışa aktarılan toplu verilerinizde kesintiler yaşayabilirsiniz. Çoğu proje uygun ve uyumlu durumda olur ancak yükseltmeden önce kontrol etmeniz önemlidir.

    • Firebase projenize kaydedilen tüm Firebase uygulamalarını Firebase konsolunda bulabilirsiniz: Proje ayarları'na gidin, ardından tüm Firebase uygulamalarınızı ve bilgilerini görmek için Uygulamalarınız kartına gidin.

    • Tüm BigQuery toplu tablolarınızı Google Cloud konsolunun BigQuery sayfasında bulabilirsiniz.

    Örneğin, yükseltme sırasında sorun yaşamayacağınız ideal durumlar şunlardır:

    • com_yourcompany_yourproject_IOS adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmiş com.yourcompany.yourproject paket kimliğine sahip bir Firebase iOS+ uygulamanız var.

    • com_yourcompany_yourproject_ANDROID adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmiş com.yourcompany.yourproject paket adına sahip bir Firebase Android uygulamanız var.

  2. Kayıtlı Firebase uygulamalarınız için ayarlanan tanımlayıcılarla eşleşmeyen toplu tablo adlarınız varsa toplu dışa aktarma işleminizin kesintiye uğramaması için bu sayfadaki talimatları uygulayın.

2. adım: Yeni altyapıya manuel olarak yükseltin

Toplu dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz Crashlytics veri dışa aktarma özelliğini Firebase konsolunda kapatıp tekrar açarak yeni altyapıya manuel olarak yükseltebilirsiniz.

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 aktarmayı 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 verilerinizin BigQuery konumuna dışa aktarılması artık yeni dışa aktarma altyapısı kullanılarak yapılıyor.

Mevcut toplu tablo adınız, Firebase uygulama tanımlayıcınızla eşleşmiyor