Firebase Crashlytics verilerini BigQuery'ye aktarın

Daha fazla analiz için Crashlytics verilerinizi BigQuery'ye aktarabilirsiniz. BigQuery, BigQuery SQL kullanarak verileri analiz etmenize, başka bir bulut sağlayıcısına 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ı uygulamanın paket tanımlayıcısına göre adlandırır. Noktalar alt çizgiye dönüştürülür ve platform adının sonuna eklenir.

Ö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 her gün bir kez güncellenir. Crashlytics BigQuery akışını dışa aktarmayı etkinleştirirseniz Firebase Crashlytics verileri de gerçek zamanlı olarak com_google_test_ANDROID_REALTIME hedefine 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ışını dışa aktarmayı etkinleştir

BigQueryStreaming ile Crashlytics verilerinizin gerçek zamanlı akışını sağlayabilirsiniz. Canlı veri gerektiren tüm amaçlar (ör. canlı bir kontrol panelinde bilgi sunmak, kullanıma sunulan sunumu canlı olarak izlemek veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izlemek) için kullanabilirsiniz.

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

Crashlytics BigQuery akışını dışa aktarmayı etkinleştirdiğinizde toplu tabloya ek olarak gerçek zamanlı bir tablo da olur. Tablolar arasındaki farkları aşağıda bulabilirsiniz:

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

Toplu tablo, etkinlikleri yazmadan önce kalıcı bir şekilde sakladığımızdan ve 30 güne kadar tabloya doldurulabileceğinden, uzun vadeli analizler ve zaman içindeki trendleri belirlemek için idealdir. Gerçek zamanlı tablonuza veri yazdığımızda bu verileri hemen BigQuery'ye yazarız. Bu nedenle, canlı kontrol panelleri ve özel uyarılar için idealdir. Bu iki tablo, her ikisinden de faydalanmak için bir birleştirme sorgusuyla birleştirilebilir. Aşağıdaki Örnek 9 sorguya bakın.

Gerçek zamanlı tablonun, varsayılan olarak 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üne bakın.

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 seçin.

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 neler 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 verilerini ve diğer verileri içerir.

BigQuery'de Firebase Crashlytics verileriyle çalışma

Aşağıdaki örneklerde, Crashlytics verilerinizde ç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östermektedir.

1. Örnek: Güne göre kilitlenme sayısı

Mümkün olduğunca fazla hatayı düzeltmek için çalışan potansiyel bir geliştirici, ekibinin yeni fotoğraf paylaşımı uygulamasını kullanıma sunmaya nihayet hazır olduğunu düşünüyor. Bundan önce, hata uyarılarının uygulamayı zaman içinde daha kararlı hale getirdiğinden emin olmak için önceki aydaki günlük kilitlenme sayısını kontrol etmek istiyorlar:

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

Proje yöneticisi, üretim planlarını doğru şekilde önceliklendirmek için ürünlerindeki en yaygın 10 kilitlenmenin nasıl belirtileceğini düşünüyor. Bu araçlar, ilgili veri noktalarını sağlayan bir sorgu üretir.

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: En çok kilitlenen 10 cihaz

Sonbahar, yeni telefon sezonudur. Bir geliştirici, bunun aynı zamanda cihaza özel yeni sorunlar dönüşü geldiği anlamına da geldiğini bilir. Uyumlulukla ilgili endişelerin önüne geçmek için, geçen hafta en çok kilitlenme yaşanmış 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, oyununun hangi seviyesinde en fazla kilitlenme yaşadığını öğrenmek istemektedir. Bu istatistiği takip etmelerine yardımcı olmak için özel bir Crashlytics anahtarı current_level ayarlıyorlar ve kullanıcı yeni bir seviyeye ulaştığında bu anahtarı güncelliyorlar.

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 anahtarla birlikte, her kilitlenme etkinliğiyle ilişkili current_level değerlerinin dağılımını raporlamak için bir sorgu yazar:

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şimde. Kullanıcılarının çoğu bu uygulamayı sevse de, üç tanesi alışılmadık sayıda çökme yaşamıştır. Ekip, sorunun temeline inmek için kullanıcı kimliklerini kullanarak bu kullanıcılara ilişkin tüm kilitlenme etkinliklerini çeken bir sorgu yazar:

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ından oluşan bir gruba kritik hata yayınladı. Ekip, belirli bir kilitlenme sorunu kimliğini tespit etmek için yukarıdaki 2. Örnekte verilen sorguyu kullanabildi. Şimdi ise 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: Bir kilitlenme sorunundan etkilenen kullanıcı sayısının ülkeye göre dökümü

Ekip artık yeni sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Ekip, yukarıdaki 2. Örnekte verilen sorguyu kullanarak belirli bir kilitlenme sorunu kimliğini tespit etmiştir. Ekip şimdi bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını görmek istiyor.

Bu sorguyu yazmak için ekibin şunları yapması gerekir:

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

  2. Uygulamalarını hem Google Analytics SDK'sına hem de Crashlytics SDK'ya 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 dahil olmak üzere DATE tarihinden bu yana ilk 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'de Firebase Crashlytics şemasını anlama

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

Firebase, bu noktadan itibaren bağlantıyı devre dışı bırakana kadar 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, BigQuery'de Crashlytics verileri için yeni bir veri kümesi oluşturur. Bu veri kümesi, birden fazla uygulaması olsa bile projenizin tamamını kapsar.

Tablolar

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

Ö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 yer alır.

Tablolar, geliştiriciler tarafından tanımlanan özel Crashlytics anahtarlarına ek olarak 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

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

Yığın izleme olmadan

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

Alan adı Veri Türü Açıklama
platform DİZE Apple veya Android uygulamaları
paket_tanımlayıcısı DİZE Grup kimliği, ör. com.google.gmail
etkinlik_kimliği DİZE Etkinlik için benzersiz bir kimlik
önemli olan BOOLE Uygulamanın kilitlenip kilitlenmediği
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şkili bir sorun varyantına sahip 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
device.manufacturer 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
bellek.kullanılmış İnt64 Kullanılan bellek baytları
bellek.boş İnt64 Kalan bellek miktarı
depolama KAYIT Cihazın kalıcı depolama alanı
depolama.ikinci el İnt64 Kullanılan depolama alanı miktarı (bayt)
depolama.bedava İnt64 Kalan depolama alanı miktarı
işletim_sistemi KAYIT Cihazdaki işletim sistemi 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_durumu DİZE Cihazın değiştirilip değiştirilmediği (ör. jailbreak'li/rootlanmış) (DEĞİŞTİRİLDİ veya DEĞİŞTİRİLMEDİ)
işletim_sistemi.türü DİZE Cihazda çalışan işletim sisteminin 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ü (ör. MOBİL, TABLET, TV vb.); "cihaz kategorisi" olarak da bilinir.
uygulama KAYIT Etkinliği oluşturan uygulama
uyg.build_version DİZE Uygulamanın derleme sürümü
uyg.display_version 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 bir kimlik
özel_anahtarlar TEKRARLANAN KAYIT Geliştirici tarafından tanımlanan anahtar/değer çiftleri
özel_anahtarlar.anahtar DİZE Geliştirici tarafından tanımlanan anahtar
özel_anahtarlar.deger 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 ÖN
logs TEKRARLANAN KAYIT Etkinleştirilirse, Crashlytics günlük aracı tarafından oluşturulan zaman damgalı günlük mesajları
günlükler.timestamp ZAMAN DAMGASI Günlüğün oluşturulma zamanı
günlükler.ileti DİZE Günlüğe kaydedilen ileti
içerik haritaları TEKRARLANAN KAYIT Etkinse, zaman damgalı Google Analytics içerik haritaları
içerik haritası.zaman damgası ZAMAN DAMGASI İçerik haritasıyla ilişkilendirilen zaman damgası
breadcrumbs.name DİZE İçerik haritasıyla ilişkilendirilen ad
içerik haritası.params TEKRARLANAN KAYIT İçerik haritasıyla ilişkilendirilen parametreler
içerik haritası.params.anahtar DİZE İçerik haritasıyla ilişkilendirilen bir parametre anahtarı
içerik haritası.params.değer DİZE İçerik haritasıyla ilişkilendirilen parametre değeri
suçlama_çerçevesi KAYIT Kilitlenme veya hatanın temel nedeni olarak tanımlanan çerçeve
suçlama_çerçevesi.satır İnt64 Çerçeve dosyasının satır numarası
suçlama_çerçeve.dosyası DİZE Çerçeve dosyasının adı
suçlama_çerçeve.sembolü DİZE Sıvı suyu elde edilemiyorsa simgesi veya ham simgesi
suçlama_çerçeve.ofset İnt64 Kodu içeren ikili görüntüdeki bayt ofseti, Java istisnaları dikkate alınmadan
suçlama_çerçevesi.adresi İnt64 Java çerçeveleri için ayarlanmamış, ikili resimdeki kodu içeren adres
suçlama_çerçeve.kitaplığı DİZE Çerçeveyi içeren kitaplığın görünen adı
suçlama_çerçeve.sahip DİZE GELİŞTİRİCİ, TEDARİKÇİ, RUNTIME, PLATFORM veya SİSTEM
suçlayıcı_çerçeve.blamed BOOLE Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
istisnalar TEKRARLANAN KAYIT Yalnızca Android: Bu etkinlik sırasında oluşan istisnalar. İç içe 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.IllegalStateException
özel_durumlar.hariç_tutma_mesajı DİZE İstisnayla ilişkili bir mesaj
özeller.yuvalanmış BOOLE Son atılan istisna (ör. ilk kayıt) hariç tümü için doğru
istisnalar.başlık DİZE İleti dizisinin başlığı
istisnalar.altyazı DİZE İleti dizisinin alt başlığı
istisnalar.suçu BOOLE Crashlytics, hatadan veya kilitlenmeden istisnanın sorumlu olduğunu belirlerse doğru
istisnalar.kareler TEKRARLANAN KAYIT İstisnayla ilişkili kareler
excluded.frames.line İnt64 Çerçeve dosyasının satır numarası
excluded.frames.file DİZE Çerçeve dosyasının adı
istisnalar.çerçeveler.simgesi DİZE Sıvı suyu elde edilemiyorsa simgesi veya ham simgesi
excluded.frames.offset İnt64 Kodu içeren ikili görüntüdeki bayt ofseti, Java istisnaları dikkate alınmadan
istisnalar.çerçeveler.adres İnt64 Java çerçeveleri için ayarlanmamış, ikili resimdeki kodu içeren adres
excluded.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
excluded.frames.owner DİZE GELİŞTİRİCİ, TEDARİKÇİ, RUNTIME, PLATFORM veya SİSTEM
excluded.frames.blamed BOOLE Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
hata TEKRARLANAN KAYIT Yalnızca Apple uygulamaları: önemli olmayan hatalar
error.sıra_adı DİZE İş parçacığının çalıştığı sıra
hata.kodu İnt64 Uygulamanın günlüğe kaydedilen özel NSError ile ilişkili hata kodu
hata.başlık DİZE İleti dizisinin başlığı
hata.altyazı DİZE İleti dizisinin alt başlığı
hata.blamed BOOLE Crashlytics'in analizinin hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
error.frames TEKRARLANAN KAYIT Yığın izlemenin (stack trace) kareleri
error.frames.line İnt64 Çerçeve dosyasının satır numarası
error.frames.file DİZE Çerçeve dosyasının adı
error.frames.sembol DİZE Sıvı suyu elde edilemiyorsa simgesi veya ham simgesi
error.frames.offset İnt64 Kodu içeren ikili resimdeki bayt ofseti
error.frames.address İnt64 İ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Çİ, RUNTIME, PLATFORM veya SİSTEM
error.frames.blamed BOOLE Crashlytics'in analizinin hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
ileti dizileri TEKRARLANAN KAYIT Etkinlik sırasında mevcut olan ileti dizileri
ileti dizileri.crashed BOOLE İleti dizisinin kilitlenip kilitlenmediği
ileti dizileri.ileti dizisi_adı DİZE İleti dizisinin adı
ileti dizileri.sıra_adı DİZE Yalnızca Apple uygulamaları: İş parçacığının çalıştığı sıra
ileti dizileri.signal_name DİZE Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca çöken yerel iş parçacıklarında bulunur
ileti dizileri.signal_kodu DİZE Uygulamanın kilitlenmesine neden olan sinyalin kodu. Yalnızca çöken yerel iş parçacıklarında bulunur
ileti dizileri.crash_adresi İnt64 Uygulamanın kilitlenmesine neden olan sinyalin adresi. Yalnızca çöken yerel iş parçacıklarında sunulur
ileti dizileri.kodu İnt64 Yalnızca Apple uygulamaları: Uygulamanın günlüğe kaydedilen özel NSError hata kodu.
ileti dizileri.başlık DİZE İleti dizisinin başlığı
ileti dizileri.altyazı DİZE İleti dizisinin alt başlığı
ileti dizileri.blamed BOOLE Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
iş parçacıkları.çerçeveler TEKRARLANAN KAYIT İş parçacığındaki çerçeveler
iş parçacıkları.frames.line İnt64 Çerçeve dosyasının satır numarası
iş parçacıkları.çerçeveler.dosya DİZE Çerçeve dosyasının adı
ileti dizileri.çerçeveler.simgesi DİZE Hidrasyon sembolü veya hydreable ise ham sembol
iş parçacıkları.çerçeveler.ofset İnt64 Kodu içeren ikili resimdeki bayt ofseti
iş parçacıkları.çerçeveler.adres İnt64 İkili resimdeki kodu içeren adres
threads.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
ileti dizileri.çerçeveler.sahip DİZE GELİŞTİRİCİ, TEDARİKÇİ, RUNTIME, PLATFORM veya SİSTEM
ileti dizileri.çerçeveler.blamed BOOLE Crashlytics'in analizinin hatanın nedeninin bu kare olduğunu belirleyip belirlemediği
unit_metadata.unity_version DİZE Bu cihazda çalışan Unity sürümü
unity_metadata.debug_build BOOLE Bu bir hata ayıklama derlemesiyse
unit_metadata.processor_type DİZE İşleyenin türü
unity_metadata.processor_count İnt64 İşlemci (çekirdek) sayısı
unity_metadata.processor_sıklık_mhz İnt64 İşlemcilerin MHz cinsinden frekansı
unit_metadata.system_memory_size_mb İnt64 Sistem belleğinin Mb cinsinden boyutu
unity_metadata.graphics_memory_size_mb İnt64 MB cinsinden grafik belleği
unity_metadata.graphics_device_id İnt64 Grafik cihazının tanımlayıcısı
unity_metadata.graphics_cihaz_sağlayıcı_kimliği İnt64 Grafik işlemcisinin tedarikçi firmasının tanımlayıcısı
unity_metadata.graphics_cihaz_adı DİZE Grafik cihazının adı
unity_metadata.graphics_device_tedarikçisi DİZE Grafik cihazının satıcısı
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ü
unit_metadata.graphics_gölgelendirici_seviyesi İnt64 Grafiklerin gölgelendirici düzeyi
unit_metadata.graphics_render_target_count İnt64 Grafik oluşturma hedeflerinin sayısı
unit_metadata.graphics_copy_texture_support DİZE Unity API'de tanımlandığı gibi grafik dokusunu kopyalama desteği
unit_metadata.graphics_max_texture_size İnt64 Oluşturma dokusuna ayrılmış maksimum boyut
unit_metadata.screen_size_px DİZE Genişlik x yükseklik olarak biçimlendirilmiş, piksel cinsinden ekranın boyutu
unity_metadata.screen_ çözümleme_dpi DİZE Kayan nokta biçiminde ekranın DPI değeri
unit_metadata.screen_refresh_rate_hz İnt64 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'nun, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik setini içeren örnek bir Crashlytics raporu vardır. Crashlytics BigQuery akış dışa aktarımını etkinleştirdiyseniz bu verileri Data Studio şablonunun Gerçek zamanlı trendler sayfasında görüntüleyebilirsiniz.Kendi uygulamanızın ham kilitlenme verilerini temel alan 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 Use Template (Şablonu Kullan) seçeneğini 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 > [projenizin-adı] > firebase_crashlytics > [tablonuzun-adı] seçeneklerini belirleyerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin. Toplu tablonuz her zaman kullanılabilir. 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 Ş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 şablon kopyanızı oluşturmak için Rapor Oluştur'u tıklayın.