Firebase Crashlytics verilerini BigQuery'ye aktarın

Daha fazla analiz için Crashlytics verilerinizi 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 dışa aktarmayı etkinleştir

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.
  2. BigQuery kartında Bağla'yı tıklayın.
  3. BigQuery'yi etkinleştirmek için ekrandaki talimatları uygulayın.

Projenizi BigQuery'ye bağladığınızda:

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

BigQuery'ye 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ümesinin içinde ayrı tablolar oluşturulur. Firebase, tablolar alt çizgiye dönüştürülen ve platform adının sonuna eklenmiş bir şekilde uygulamanın paket tanımlayıcısına göre adlandırır.

Örneğin, com.google.test kimliğine sahip bir uygulamanın verileri, com_google_test_ANDROID adlı bir tabloda yer alır. Bu toplu tablo günde bir kez güncellenir. Crashlytics BigQuery akışı dışa aktarmayı etkinleştirirseniz Firebase Crashlytics verileri gerçek zamanlı olarak com_google_test_ANDROID_REALTIME üzerinde aktarılır.

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

Crashlytics BigQuery akış dışa aktarmayı etkinleştir

BigQueryStreaming ile Crashlytics verilerinizi gerçek zamanlı olarak canlı oynatabilirsiniz. Bu özelliği canlı veri gerektiren tüm amaçlar için kullanabilirsiniz. Örneğin, canlı kontrol panelinde bilgi sunabilir, canlı sunumu canlı olarak izleyebilirsiniz. Ayrıca, uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını da izleyebilirsiniz.

Crashlytics BigQuery akışını dışa aktarma özelliği, BigQuery korumalı alanında kullanılamaz.

Crashlytics BigQuery akışını dışa aktarmayı etkinleştirdiğinizde, toplu tabloya ek olarak gerçek zamanlı bir tablonuz da olur. Tablolar arasında dikkat etmeniz gereken farklılıklar şunlardır:

Toplu Tablo Gerçek Zamanlı Tablo
  • Veriler günde bir kez dışa aktarılır
  • BigQuery'ye toplu yazmadan önce dayanıklı şekilde depolanan etkinlikler
  • 30 gün öncesine kadar geri doldurulabilir
  • Veriler gerçek zamanlı olarak dışa aktarılır
  • Dolgu yok

Toplu tablo, etkinlikleri yazmadan önce kalıcı olarak depoladığımız ve 30 güne kadar tabloya doldurulabildiği için zaman içinde oluşan trendleri belirlemek ve uzun vadeli analiz yapmak için idealdir. Gerçek zamanlı tablonuza veri yazdığımızda bu verileri anında BigQuery'ye yazarız. Bu nedenle canlı kontrol panelleri ve özel uyarılar için idealdir. Bu iki tablo, her ikisinden de yararlanmak için birleştirme sorgusuyla birleştirilebilir. Aşağıda 9. Örnek sorguya bakın.

Varsayılan olarak, gerçek zamanlı tablolarda bölüm geçerlilik süresi 30 gündür. Bunu nasıl değiştireceğinizi öğrenmek için Bölüm geçerlilik süresini güncelleme bölümünü inceleyin.

Crashlytics BigQuery akışını etkinleştir

Akışı etkinleştirmek için BigQuery entegrasyonlar sayfasının Crashlytics bölümüne gidin ve Akışı dahil et onay kutusunu işaretleyin.

Data Studio Şablonu

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

Görüntüleme sayısı

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

Dışa aktarılan verilerle ne yapabilirsiniz?

BigQuery dışa aktarma işlemleri; cihaz türü, işletim sistemi, istisnalar (Android uygulamaları) veya hatalar (Apple uygulamaları) ve Crashlytics günlükleri dahil olmak üzere ham kilitlenme verilerinin yanı sıra başka veriler de içerir.

BigQuery'de Firebase Crashlytics verileriyle çalışma

Aşağıdaki örneklerde Crashlytics verileriniz üzerinde çalıştırabileceğiniz sorgular gösterilmektedir. Bu sorgular, Crashlytics kontrol panelinde bulunmayan raporlar oluşturur.

Crashlytics sorgusu örnekleri

Aşağıdaki örnekler, kilitlenme etkinliği verilerini daha kolay anlaşılır özetlerde toplayan raporların nasıl oluşturulacağını gösterir.

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

Baş geliştirici, mümkün olduğunca çok sayıda hatayı düzeltmek için çalıştıktan sonra ekibinin nihayet yeni fotoğraf paylaşımı uygulamasını kullanıma sunmaya hazır olduğunu düşünüyor. Bunu yapmadan önce hata ayıklamalarının uygulamayı zamanla daha kararlı hale getirdiğinden emin olmak için bir önceki aya ait günlük kilitlenme sayısını kontrol etmek istiyor:

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `projectId.firebase_crashlytics.package_name_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

2. Örnek: En yaygın kilitlenmeleri bulma

Üretim planlarını doğru şekilde önceliklendirmek için proje yöneticisi, ürünlerinde en yaygın 10 kilitlenmeyi nasıl tespit edeceğini düşünür. İlgili veri noktalarını sağlayan bir sorgu üretirler:

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

3. Örnek: Kilitlenen ilk 10 cihaz

Sonbahar yeni telefon sezonudur! Bir geliştirici bunun aynı zamanda cihaza özel yeni sorunlar sezonu anlamına geldiğini biliyor. Uyumlulukla ilgili endişelerin önüne geçmek için geçen hafta en çok kilitlenmenin görüldüğü 10 cihazı tanımlayan bir sorgu oluşturdular:

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

4. Örnek: Özel anahtara göre filtreleme

Bir oyun geliştirici, en çok kilitlenmenin yaşandığı seviyeyi öğrenmek istiyor. Ekip, bu istatistiği takip etmesine yardımcı olmak için özel bir Crashlytics anahtarı current_level ayarlıyor ve kullanıcı yeni bir seviyeye her ulaştığında bu anahtarı güncelliyor.

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

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

Java

Crashlytics.setInt("current_level", 3);

BigQuery Export'ta bu anahtarı kullanarak her kilitlenme etkinliğiyle ilişkili current_level değerlerinin dağılımını bildirmek için bir sorgu yazarlar:

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

5. Örnek: User-ID ayıklama

Bir geliştiricinin uygulaması erken erişim sürümündedir. Kullanıcıların çoğu bu yeni uygulamaya bayılıyor ancak üçü alışılmadık sayıda kilitlenme yaşıyor. Sorunun temeline inmek için kullanıcı kimliklerini kullanarak bu kullanıcılar için tüm kilitlenme etkinliklerini toplayan bir sorgu yazarlar:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

6. Örnek: Belirli bir kilitlenme sorunuyla karşılaşan tüm kullanıcıları bulma

Bir geliştirici, beta test kullanıcıları grubuna kritik bir hata yayınladı. Ekip, belirli kilitlenme sorunu kimliğini belirlemek için yukarıdaki 2. Örnekteki sorguyu kullanabildi. Şimdi, bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor:

SELECT user.id as user_id
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  issue_id = "YOUR_ISSUE_ID"
  AND application.display_version = ""
  AND user.id != ""
ORDER BY
  user.id;

7. Örnek: Ülkeye göre ayrılmış şekilde, kilitlenme sorunundan etkilenen kullanıcı sayısı

Ekip şimdi yeni bir sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Kilitlenme sorunu kimliğini tanımlamak için yukarıdaki 2. Örnekteki sorguyu kullanabildiler. Ekip şimdi bu kazanın dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını görmek istiyor.

Ekibin bu sorguyu yazabilmesi için şunları yapması gerekir:

  1. Google Analytics için BigQuery dışa aktarma işlemlerini etkinleştirin. Proje verilerini BigQuery'ye aktarma başlıklı makaleyi inceleyin.

  2. Uygulamasını hem Google Analytics SDK'sına hem de Crashlytics SDK'sına kullanıcı kimliği iletecek şekilde güncellemelidir.

    Objective-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Swift
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Google Analytics BigQuery veri kümesindeki etkinlikleri Crashlytics BigQuery veri kümesindeki kilitlenmelerle birleştirmek için User-ID alanını kullanan bir sorgu yazın:

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `projectId.firebase_crashlytics.package_name_ANDROID` c
    INNER JOIN  `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id
    WHERE
     c.issue_id = "YOUR_ISSUE_ID"
     AND a._TABLE_SUFFIX BETWEEN '20190101'
     AND '20200101'
    GROUP BY
     c.issue_id,
     a.geo.country,
     c.user.id
    

8. Örnek: Bugün şimdiye kadarki en önemli 5 sorun

Crashlytics BigQuery akış dışa aktarma özelliğinin etkinleştirilmesini gerektirir

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

9. Örnek: Bugün de dahil olmak üzere DATE tarihinden beri en sık karşılaşılan 5 sorun

Crashlytics BigQuery akış dışa aktarma özelliğinin etkinleştirilmesini gerektirir.

Bu örnekte, güvenilir toplu verilere gerçek zamanlı bilgiler eklemek için toplu ve gerçek zamanlı tabloları birleştiriyoruz. event_id birincil anahtar olduğundan, ortak etkinlikleri iki tablodan tekilleştirmek için DISTINCT event_id kullanabiliriz.

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID`)
WHERE
  event_timestamp >= "2020-01-13"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

BigQuery'deki Firebase Crashlytics şemasını anlama

Crashlytics'i BigQuery'ye bağladığınızda Firebase, bağlantıdan iki gün öncesine kadar olan etkinlikler de dahil olmak üzere son etkinlikleri (kilitlenmeler, önemli olmayan hatalar ve ANR'ler) dışa aktarır ve 30 güne kadar dolgu seçeneğini kullanabilir.

Bu andan itibaren bağlantıyı 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'de kullanılabilir hale gelmesi birkaç dakika sürebilir.

Veri kümeleri

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

Tablolar

Firebase Crashlytics, projenizdeki her uygulama için veri dışa aktarma özelliğini devre dışı bırakmadıysanız, bu uygulama için veri kümesinde bir tablo oluşturur. Firebase, tabloları uygulamanın paket tanımlayıcısına göre adlandırarak alt çizgiye dönüştürülen ve platform adının sonuna eklenen platform adını alır.

Örneğin, com.google.test kimliğine sahip bir Android uygulamasının verileri com_google_test_ANDROID adlı bir tabloda, gerçek zamanlı veriler (etkinse) ise com_google_test_ANDROID_REALTIME adlı bir tabloda olur

Tablolar, geliştiriciler tarafından tanımlanan özel Crashlytics anahtarlarına ek olarak standart bir Crashlytics veri grubu içerir.

Satırlar

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

Sütunlar

Bir tablodaki sütunlar; kilitlenmeler, önemli olmayan hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery akışı dışa aktarma özelliği etkinse gerçek zamanlı tablo, toplu tabloyla aynı sütunlara sahip olur. Dışa aktarma işlemindeki sütunlar aşağıda listelenmiştir.

Yığın izlemeler olmadan

Yığın izleme içermeyen etkinlikleri temsil eden satırlarda bulunan sütunlar.

Alan adı Veri Türü Açıklama
platform DİZE Apple veya Android uygulamaları
paket_tanımlayıcı DİZE Paket kimliği (ör. com.google.gmail)
event_id [etkinlik_kimliği] DİZE Etkinlik için benzersiz bir kimlik
önemli BOOLE Uygulamanın kilitlenip kilitlenmediği
error_type [hata_türü] DİZE Etkinliğin hata türü (FATAL, NON_FATAL, ANR)
sorun_kimliği DİZE Etkinlikle ilişkili sorun
varyant_kimliği DİZE Bu etkinlikle ilişkilendirilmiş sorun varyantı
Tüm etkinliklerin ilişkilendirilmiş bir sorun varyantı olmadığını unutmayın.
event_timestamp ZAMAN DAMGASI Etkinliğin ne zaman gerçekleştiği
device KAYIT Etkinliğin gerçekleştiği cihaz
cihaz.üretici DİZE Cihaz üreticisi
cihaz.modeli DİZE Cihaz modeli
cihaz.mimari DİZE X86_32, X86_64, ARMV7, ARM64, ARMV7S veya ARMV7K
bellek KAYIT Cihazın bellek durumu
kullanılan bellek İT64 Kullanılan bellek baytı
belleksiz İT64 Kalan bellek baytı
depolama KAYIT Cihazın kalıcı depolama alanı
depolama alanı.kullanılan İT64 Kullanılan depolama alanı baytı
depolama.ücretsiz İT64 Kalan depolama alanı (bayt)
işletim_sistemi KAYIT Cihazdaki işletim sistemiyle ilgili ayrıntılar
işletim_sistemi.display_sürümü DİZE Cihazdaki işletim sistemi sürümü
operating_system.name DİZE Cihazdaki işletim sisteminin adı
işletim_sistemi.modification_state DİZE Cihazın değiştirilip değiştirilmediği, örneğin jailbreak'li/rootlanmış (DEĞİŞTİRİLDİ veya DEĞİŞTİRİLMEDİ)
işletim_sistemi.type DİZE Cihazda çalışan işletim sistemi türü (ör. iOS, MACOS); yalnızca Apple platform uygulamaları için kullanılabilir
işletim_sistemi.cihaz_türü DİZE Cihazın türü (örneğin, MOBİL, TABLET, TV vb.); "Cihaz kategorisi" olarak da bilinir.
uygulama KAYIT Etkinliği oluşturan uygulama
uygulama.derleme_sürümü DİZE Uygulamanın derleme sürümü
uygulama.görünen_sürümü DİZE
kullanıcı KAYIT İsteğe bağlı: Uygulamanın kullanıcısından toplanan bilgiler
user.name DİZE İsteğe bağlı: Kullanıcının adı
kullanici.eposta 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şkilendirilen uygulamaya özel kimlik
özel_anahtarlar TEKRARLANAN KAYIT Geliştirici tarafından tanımlanmış anahtar/değer çiftleri
özel_anahtarlar.anahtar DİZE Geliştirici tarafından tanımlanmış anahtar
özel_anahtarlar.değer DİZE Geliştirici tarafından tanımlanan değer
kurulum_uuid DİZE Benzersiz bir uygulama ve cihaz yüklemesini tanımlayan kimlik
Crashlytics_sdk_sürümleri DİZE Etkinliği oluşturan Crashlytics SDK sürümü
uygulama_yönü DİZE PORTRAIT, LANDSCAPE, FACE_UP veya FACE_DOWN
cihaz_yönü DİZE PORTRAIT, LANDSCAPE, FACE_UP veya FACE_DOWN
işlem_durumu DİZE ARKA PLAN veya ÖNCEKİ
logs TEKRARLANAN KAYIT Etkinleştirilmişse Crashlytics günlük kaydedici tarafından oluşturulan zaman damgalı günlük iletileri
günlükler.zaman_damgası ZAMAN DAMGASI Günlüğün oluşturulduğu tarih
günlükler.mesaj DİZE Günlüğe kaydedilen mesaj
içerik haritaları TEKRARLANAN KAYIT Etkinleştirilmişse zaman damgası bulunan Google Analytics içerik haritaları
içerik haritaları.timestamp ZAMAN DAMGASI İçerik haritasıyla ilişkili zaman damgası
breadcrumbs.name DİZE İçerik haritasıyla ilişkilendirilen ad
içerik haritaları.params TEKRARLANAN KAYIT İçerik haritasıyla ilişkili parametreler
içerik haritası.params.anahtar DİZE İçerik haritasıyla ilişkili parametre anahtarı
içerik haritası.params.değer DİZE İçerik haritasıyla ilişkili parametre değeri
suç_çerçevesi KAYIT Kilitlenmenin veya hatanın temel nedeni olarak belirlenen çerçeve
suç_çerçevesi.line İT64 Çerçevedeki dosyanın satır numarası
suç_çerçevesi.dosya DİZE Çerçeve dosyasının adı
suç_çerçevesi.simge DİZE Hidratlı sembol veya hidrat içmeyi mümkün değilse ham simgesi
suç_çerçevesi.uzaklaşma İT64 Kodu içeren ikili görüntüye bayt ofseti (Java istisnaları için ayarlanmaz)
suç_çerçevesi.adres İT64 Java çerçeveleri için ayarlanmamış, ikili resimdeki kodu içeren adres
suç_çerçevesi.kitaplık DİZE Çerçeveyi içeren kitaplığın görünen adı
suç_çerçevesi.sahip DİZE GELİŞTİRİCİ, TEDARİKÇİ, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM
suç_çerçevesi.suçlanan BOOLE Crashlytics'in analizinin, kilitlenmenin veya hatanın nedeninin bu çerçeve olup olmadığı
istisnalar TEKRARLANAN KAYIT Yalnızca Android: Bu etkinlik sırasında oluşan istisnalar. İç içe yerleştirilmiş istisnalar ters kronolojik sırada sunulur (okuma: son kayıt, atılan ilk istisnadır)
istisnaları.tür DİZE İstisna türü, ör. java.lang. InvalidStateException
İstisnalar.istisna_mesajı DİZE İstisnayla ilişkili bir mesaj
İstisnalar.iç içe yerleştirilmiş BOOLE Son atılan istisna (yani ilk kayıt) hariç tümü için doğru
istisnaları.başlık DİZE İleti dizisinin başlığı
özel_altyazılar DİZE İleti dizisinin alt başlığı
istisnaları.suç BOOLE Crashlytics, hatadan veya kilitlenmeden istisnanın neden olduğunu belirlerse doğru değerini alır
istisnalar.çerçeveler TEKRARLANAN KAYIT Özel durumla ilişkilendirilen çerçeveler
istisnaları.frames.line İT64 Çerçevedeki dosyanın satır numarası
istisnaları.çerçeveler.dosyası DİZE Çerçeve dosyasının adı
istisnalar.çerçeveler.simgesi DİZE Hidratlı sembol veya hidrat içmeyi mümkün değilse ham simgesi
istisnalar.çerçeveler.offset İT64 Kodu içeren ikili görüntüye bayt ofseti (Java istisnaları için ayarlanmaz)
istisnalar.çerçeveler.adresi İT64 Java çerçeveleri için ayarlanmamış, ikili resimdeki kodu içeren adres
istisnalar.çerçeveler.library DİZE Çerçeveyi içeren kitaplığın görünen adı
istisnaları.frames.sahip DİZE GELİŞTİRİCİ, TEDARİKÇİ, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM
istisnalar.çerçeveler.blamed BOOLE Crashlytics'in analizinin, kilitlenmenin veya hatanın nedeninin bu çerçeve olup olmadığı
hata TEKRARLANAN KAYIT Yalnızca Apple uygulamaları: önemli olmayan hatalar
error.kuyruk_adı DİZE İş parçacığının çalıştırıldığı sıra
hata.kod İT64 Uygulamanın günlüğe kaydedilen NSError ile ilişkili hata kodu
hata.başlık DİZE İleti dizisinin başlığı
error.altyazı DİZE İleti dizisinin alt başlığı
hatası.suçu BOOLE Crashlytics'in analizinin, hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği
hatası.çerçeveler TEKRARLANAN KAYIT Yığın izlemenin çerçeveleri
error.frames.line İT64 Çerçevedeki dosyanın satır numarası
error.frames.file DİZE Çerçeve dosyasının adı
hata.çerçeveler.simgesi DİZE Hidratlı sembol veya hidrat içmeyi mümkün değilse ham simgesi
error.frames.offset İT64 Kodu içeren ikili resme giden bayt farkı
error.frames.address İT64 İkili resimdeki kodu içeren adres
error.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
error.frames.owner DİZE GELİŞTİRİCİ, TEDARİKÇİ, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM
error.frames.blamed BOOLE Crashlytics'in analizinin, hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği
ileti dizileri TEKRARLANAN KAYIT Etkinlik sırasında mevcut olan ileti dizileri
ileti dizileri.çöktü BOOLE İş parçacığının çöküp çökmediği
messages.thread_name DİZE İleti dizisinin adı
messages.kuyruk_adı DİZE Yalnızca Apple uygulamaları: İş parçacığının çalıştırıldığı sıra
messages.signal_name DİZE Uygulamanın kilitlenmesine neden olan sinyalin adı (yalnızca kilitlenen yerel iş parçacıklarında bulunur)
messages.sinyal_code DİZE Uygulamanın kilitlenmesine neden olan sinyalin kodu (yalnızca kilitlenen yerel iş parçacıklarında bulunur)
ileti dizileri.crash_address İT64 Uygulamanın kilitlenmesine neden olan sinyalin adresi; yalnızca çökmüş yerel iş parçacıklarında bulunur
messages.code İT64 Yalnızca Apple uygulamaları: Uygulamanın özel günlüğe kaydedilen NSError hatasının kodu
ileti dizileri.başlık DİZE İleti dizisinin başlığı
topics.altyazı DİZE İleti dizisinin alt başlığı
başlıklar.sorumlu BOOLE Crashlytics'in analizinin, kilitlenmenin veya hatanın nedeninin bu çerçeve olup olmadığı
mesaj dizileri.çerçeveler TEKRARLANAN KAYIT İleti dizisinin çerçeveleri
Thread.frames.line İT64 Çerçevedeki dosyanın satır numarası
Thread.frames.file DİZE Çerçeve dosyasının adı
ipler.çerçeveler.simgesi DİZE Hidrat sembolü veya hidyalatılmış değilse ham simgesi
ipler.çerçeveler.uzaklaşması İT64 Kodu içeren ikili resme giden bayt farkı
Thread.frames.address İT64 İkili resimdeki kodu içeren adres
Thread.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
ileti dizileri.çerçeve.sahibi DİZE GELİŞTİRİCİ, TEDARİKÇİ, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM
ileti dizileri.çerçeveler.bama BOOLE Crashlytics'in analizinin, hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği
unity_metadata.unity_sürümü 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 İşlemci türü
unity_metadata.processor_count İT64 İşlemci (çekirdek) sayısı
unity_metadata.processor_frequency_mhz İT64 İşlemcilerin MHz cinsinden frekansı
oney_metadata.system_memory_size_mb İT64 Sistem belleğinin Mb cinsinden boyutu
ünite_meta verileri.grafikler_bellek_boyutu_mb İT64 MB cinsinden grafik belleği
oney_metadata.graphics_cihaz_kimliği İT64 Grafik cihazının tanımlayıcısı
oney_metadata.graphics_device_sağlayıcı_kimliği İT64 Grafik işlemcisi tedarikçisinin tanımlayıcısı
oney_metadata.graphics_cihaz_adı DİZE Grafik cihazının adı
unity_metadata.graphics_device_tedarikçi DİZE Grafik cihazının satıcısı
oney_metadata.graphics_device_sürümü DİZE Grafik cihazının sürümü
oney_metadata.graphics_cihaz_türü DİZE Grafik cihazının türü
oney_metadata.graphics_shader_seviyesi İT64 Grafiklerin gölgelendirici düzeyi
unity_metadata.graphics_render_target_count İT64 Grafik oluşturma hedeflerinin sayısı
oney_metadata.graphics_copy_texture_support DİZE Unity API'de tanımlandığı gibi grafik dokusunu kopyalama desteği
oney_metadata.graphics_max_texture_size İT64 Doku oluşturmaya ayrılmış maksimum boyut
oney_metadata.screen_size_px DİZE Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilir)
unity_metadata.screen_resolve_dpi DİZE Ekranın kayan nokta sayısı olarak DPI değeri
oney_metadata.screen_refresh_rate_hz İT64 Ekranın Hz cinsinden yenileme hızı

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

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

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

Crashlytics rapor şablonu kullanma

Data Studio, Crashlytics için dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren örnek bir rapor sunar. Crashlytics BigQuery akışını dışa aktarmayı etkinleştirdiyseniz bu verileri Data Studio şablonunun Gerçek zamanlı trendler sayfasında görüntüleyebilirsiniz.Kendi uygulamanızın ham kilitlenme verilerine dayalı yeni raporları ve görselleştirmeleri hızlıca 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 menüsünde Yeni Veri Kaynağı Oluştur'u seçin.
  4. BigQuery kartında Seç'i tıklayın.
  5. Projelerim > [projenizin-adı] > firebase_crashlytics > [tablonuzun-adı] seçeneğini belirleyerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin. Toplu tablonuzu her zaman seçebilirsiniz. Crashlytics BigQuery akış dışa aktarma özelliği etkinse bunun yerine gerçek zamanlı tablonuzu seçebilirsiniz.
  6. Yapılandırma bölümünde, Crashlytics Şablonu 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 Add to Report'u (Rapora Ekle) tıklayın.
  9. Son olarak, Crashlytics Data Studio Kontrol Paneli şablonunun kopyasını oluşturmak için Create Report'u (Rapor Oluştur) tıklayın.