Daha ayrıntılı 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
- Firebase konsolundaki Entegrasyonlar sayfasına gidin.
- BigQuery kartında Bağlantı'yı tıklayın.
- BigQuery'yi etkinleştirmek için ekrandaki talimatları izleyin.
Projenizi BigQuery'ye bağladığınızda:
- Firebase, verilerinizin Firebase projenizden BigQuery'ye günlük senkronizasyonunu ayarlar.
- Varsayılan olarak projenizdeki tüm uygulamalar BigQuery'ye bağlıdı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, mevcut verilerinizin bir kopyasını BigQuery'ye aktarır . Bağlantılı her uygulama için bu, günlük senkronizasyondan elde edilen verileri içeren bir toplu tablo içerir.
- Crashlytics BigQuery akış dışa aktarımını etkinleştirirseniz bağlantılı tüm uygulamalarda ayrıca sürekli güncellenen verileri içeren bir gerçek zamanlı tablo bulunur.
BigQuery dışa aktarmayı 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ümesinde ayrı tablolar oluşturulacaktır. Firebase, tabloları uygulamanın paket tanımlayıcısına göre, alt çizgilere dönüştürülmüş noktalar ve sonuna bir platform adı eklenerek adlandırır.
Örneğin, com.google.test
kimliğine sahip bir uygulamanın verileri com_google_test_ANDROID
adlı bir tabloda olacaktı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
adresine aktarılacaktır.
Tablodaki her satır, kilitlenmeler, önemli olmayan hatalar ve ANR'ler dahil olmak üzere uygulamada meydana gelen bir olayı temsil eder.
Crashlytics BigQuery akışını dışa aktarmayı etkinleştir
BigQueryStreaming ile Crashlytics verilerinizi gerçek zamanlı olarak yayınlayabilirsiniz. Canlı bir kontrol panelinde bilgi sunmak, bir sunumu canlı olarak izlemek veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izlemek gibi canlı veri gerektiren herhangi bir amaç için kullanabilirsiniz.
Crashlytics BigQuery akışını dışa aktarma, BigQuery korumalı alanı için kullanılamaz.
Crashlytics BigQuery akış dışa aktarımını etkinleştirdiğinizde toplu tabloya ek olarak gerçek zamanlı bir tabloya sahip olursunuz. Tablolar arasında bilmeniz gereken farklar şunlardır:
Toplu Tablo | Gerçek Zamanlı Tablo |
---|---|
|
|
Toplu tablo, uzun vadeli analiz ve zaman içindeki eğilimleri belirlemek için idealdir çünkü olayları yazmadan önce kalıcı olarak saklıyoruz ve bunlar 90 güne kadar tabloya doldurulabiliyor. Gerçek zamanlı tablonuza veri yazdığımızda bunu hemen BigQuery'ye yazarız ve bu nedenle canlı kontrol panelleri ve özel uyarılar için idealdir. Bu iki tablo, her ikisinin de avantajlarından yararlanmak için bir birleştirme sorgusuyla birleştirilebilir. Aşağıdaki Sorgu Örneği 9'a bakın.
Varsayılan olarak, gerçek zamanlı tablonun bölümün sona erme süresi 30 gündür. Bunu nasıl değiştireceğinizi öğrenmek için bkz. Bölümün geçerlilik süresinin güncellenmesi .
Crashlytics BigQuery akışını etkinleştirin
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ı izleyin.
Görüntüleme
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 bkz. Görünüm oluşturma .
Dışa aktarılan verilerle ne yapabilirsiniz?
BigQuery dışa aktarmaları, 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.
BigQuery'de Firebase Crashlytics verileriyle çalışma
Aşağıdaki örnekler Crashlytics verilerinizde çalıştırabileceğiniz sorguları göstermektedir. Bu sorgular Crashlytics kontrol panelinde bulunmayan raporlar oluşturur.
Crashlytics sorgu örnekleri
Aşağıdaki örnekler, kilitlenme olayı verilerini daha kolay anlaşılır özetler halinde toplayan raporların nasıl oluşturulacağını göstermektedir.
Örnek 1: Günlere göre kilitlenmeler
Lider geliştirici, mümkün olduğu kadar çok hatayı düzeltmeye çalıştıktan sonra ekibinin nihayet yeni fotoğraf paylaşım uygulamasını başlatmaya hazır olduğunu düşünüyor. Bunu yapmadan önce, yaptıkları hata giderme işleminin zamanla uygulamayı daha kararlı hale getirdiğinden emin olmak için geçen 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;
Örnek 2: En yaygın çökmeleri bulun
Bir proje yöneticisi, üretim planlarını doğru şekilde önceliklendirebilmek için, ürünündeki en yaygın 10 çökmeyi nasıl belirteceğ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;
Örnek 3: En çok kilitlenen 10 cihaz
Sonbahar yeni telefon sezonu! Bir geliştirici bunun aynı zamanda cihaza özgü yeni sorunlar sezonu anlamına da geldiğini biliyor. Yaklaşan uyumluluk endişelerinin önüne geçmek için geçen hafta en çok kilitlenme yaşayan 10 cihazı tanımlayan bir sorgu hazırladılar:
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;
Örnek 4: Özel anahtara göre filtreleme
Bir oyun geliştiricisi, oyunlarının hangi seviyesinde en fazla çökme yaşandığını bilmek istiyor. Bu istatistiği takip etmelerine yardımcı olmak için özel bir Crashlytics anahtarı current_level
ayarlıyorlar ve kullanıcı her yeni seviyeye ulaştığında bunu güncelliyorlar.
Amaç-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Süratli
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
BigQuery dışa aktarmalarındaki bu anahtarla, her kilitlenme olayıyla 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
Örnek 5: Kullanıcı Kimliğini çıkarma
Bir geliştiricinin erken erişimdeki bir uygulaması var. Kullanıcılarının çoğu bunu seviyor ancak üçü alışılmadık sayıda çökme yaşadı. Sorunun temeline inmek için, kullanıcı kimliklerini kullanarak bu kullanıcılar için tüm kilitlenme olaylarını çeken bir sorgu yazarlar:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Örnek 6: Belirli bir kilitlenme sorunuyla karşılaşan tüm kullanıcıları bulun
Bir geliştirici, bir grup beta testçisine kritik bir hata yayınladı. Ekip, belirli kilitlenme sorunu kimliğini belirlemek için yukarıdaki Örnek 2'deki sorguyu kullanabildi. Şimdi bu çökmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyorlar:
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;
Örnek 7: Kilitlenme sorunundan etkilenen kullanıcı sayısı, ülkeye göre ayrılmış
Artık ekip, yeni bir sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Belirli kilitlenme sorunu kimliğini belirlemek için yukarıdaki Örnek 2'deki sorguyu kullanabildiler. Ekip şimdi bu kazanın dünya çapında farklı ülkelerdeki kullanıcılara yayılıp yayılmadığını görmek istiyor.
Bu sorguyu yazmak için ekibin şunları yapması gerekir:
Google Analytics için BigQuery dışa aktarmalarını etkinleştirin. Proje verilerini BigQuery'ye aktarma konusuna bakın.
Kullanıcı kimliğini hem Google Analytics SDK'sına hem de Crashlytics SDK'sına iletecek şekilde uygulamalarını güncelleyin.
Amaç-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Süratli
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Google Analytics BigQuery veri kümesindeki etkinlikleri Crashlytics BigQuery veri kümesindeki kilitlenmelerle birleştirmek için kullanıcı kimliği 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
Örnek 8: Bugün şu ana kadarki en önemli 5 konu
Crashlytics BigQuery akış dışa aktarımının 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;
Örnek 9: Bugün de dahil olmak üzere DATE tarihinden bu yana en sık karşılaşılan 5 sayı
Crashlytics BigQuery akış dışa aktarımının etkinleştirilmesini gerektirir.
Bu örnekte, güvenilir toplu verilere gerçek zamanlı bilgi eklemek için toplu ve gerçek zamanlı tabloları birleştiriyoruz. event_id
birincil anahtar olduğundan, iki tablodaki ortak olayları 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, doksan güne kadar doldurma seçeneğiyle birlikte, bağlantıdan iki gün öncesine kadar olan olaylar da dahil olmak üzere son etkinlikleri (kilitlenmeler, önemli olmayan hatalar ve ANR'ler) dışa aktarır.
Bu noktadan siz bağlantıyı devre dışı bırakana kadar Firebase, Crashlytics etkinliklerini günlük olarak dışa aktarır. Her dışa aktarmanın ardından 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. Veri kümesi, birden fazla uygulamaya sahip olsa bile projenizin tamamını kapsar.
Tablolar
Firebase Crashlytics, projenizdeki her uygulama için veri kümesinde bir tablo oluşturur (ilgili uygulamaya ilişkin verileri dışa aktarmayı devre dışı bırakmadığınız sürece). Firebase, tabloları uygulamanın paket tanımlayıcısına göre, alt çizgilere dönüştürülmüş noktalar ve sonuna bir platform adı eklenerek adlandırır.
Örneğin, com.google.test
kimliğine sahip bir Android uygulamasının verileri com_google_test_ANDROID
adlı bir tabloda yer alır ve gerçek zamanlı veriler (etkinleştirilmişse) 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 verileri 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, önemli olmayan hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery akışını dışa aktarma etkinleştirilirse gerçek zamanlı tablo, toplu tabloyla aynı sütunlara sahip olacaktır. Dışa aktarmadaki sütunlar aşağıda listelenmiştir.
Yığın izleri olmadan
Yığın izleri olmayan olayları temsil eden satırlarda bulunan sütunlar.
Alan adı | Veri tipi | Tanım |
---|---|---|
platformu | SİCİM | Apple veya Android uygulamaları |
bundle_identifier | SİCİM | Paket kimliği, örneğin com.google.gmail |
event_id | SİCİM | Etkinlik için benzersiz bir kimlik |
is_fatal | BOOLE | Uygulamanın çöküp çökmediği |
hata_tipi | SİCİM | Olayın hata türü (FATAL, NON_FATAL, ANR) |
sayı_id | SİCİM | Etkinlikle ilgili sorun |
varyant_id | SİCİM | Bu etkinlikle ilişkili sorun çeşidi Tüm olayların ilişkili bir sorun değişkenine sahip olmadığını unutmayın. |
event_timestamp | ZAMAN DAMGASI | Olayın meydana geldiği zaman |
cihaz | KAYIT | Olayın gerçekleştiği cihaz |
cihaz üreticisi | SİCİM | Cihaz üreticisi |
cihaz modeli | SİCİM | Cihaz modeli |
cihaz mimarisi | SİCİM | X86_32, X86_64, ARMV7, ARM64, ARMV7S veya ARMV7K |
hafıza | KAYIT | Cihazın hafıza durumu |
kullanılan bellek | INT64 | Kullanılan bellek baytı |
hafıza.ücretsiz | INT64 | Kalan bellek baytı |
depolamak | KAYIT | Cihazın kalıcı depolaması |
depolama.kullanılmış | INT64 | Kullanılan depolama baytı |
depolama.ücretsiz | INT64 | Bayt depolama alanı kaldı |
işletim sistemi | KAYIT | Cihazdaki işletim sisteminin ayrıntıları |
işletim_sistemi.display_version | SİCİM | Cihazdaki işletim sisteminin sürümü |
işletim_sistemi.adı | SİCİM | Cihazdaki işletim sisteminin adı |
işletim_sistemi.modification_state | SİCİM | Cihazın değiştirilip değiştirilmediği, örneğin jailbreakli/root edilmiş (DEĞİŞTİRİLMİŞ veya DEĞİŞTİRİLMEMİŞ) |
işletim_sistemi.türü | SİCİM | Cihazda çalışan işletim sisteminin türü (örneğin, IOS, MACOS); yalnızca Apple platformu uygulamaları için kullanılabilir |
işletim_sistemi.device_type | SİCİM | Cihazın türü (örneğin, MOBİL, TABLET, TV vb.); "cihaz kategorisi" olarak da bilinir |
başvuru | KAYIT | Etkinliği oluşturan uygulama |
application.build_version | SİCİM | Uygulamanın derleme sürümü |
application.display_version | SİCİM | |
kullanıcı | KAYIT | İsteğe bağlı: Uygulamanın kullanıcısı hakkında toplanan bilgiler |
Kullanıcı adı | SİCİM | İsteğe bağlı: Kullanıcının adı |
Kullanıcı e-postası | SİCİM | İsteğe bağlı: Kullanıcının e-posta adresi |
Kullanıcı kimliği | SİCİM | İsteğe bağlı: Kullanıcıyla ilişkili uygulamaya özel bir kimlik |
özel_anahtarlar | TEKRARLANAN KAYIT | Geliştirici tarafından tanımlanan anahtar/değer çiftleri |
özel_anahtarlar.anahtar | SİCİM | Geliştirici tanımlı bir anahtar |
özel_anahtarlar.değer | SİCİM | Geliştirici tarafından tanımlanan bir değer |
kurulum_uuid | SİCİM | Benzersiz bir uygulama ve cihaz kurulumunu tanımlayan kimlik |
Crashlytics_sdk_versions | SİCİM | Etkinliği oluşturan Crashlytics SDK sürümü |
uygulama_oryantasyonu | SİCİM | PORTRE, MANZARA, YÜZ YUKARI veya YÜZ AŞAĞI |
cihaz_oryantasyonu | SİCİM | PORTRE, MANZARA, YÜZ YUKARI veya YÜZ AŞAĞI |
süreç_durumu | SİCİM | ARKA PLAN veya ÖN PLAN |
kütükler | TEKRARLANAN KAYIT | Etkinleştirilmişse, Crashlytics günlükçü tarafından oluşturulan zaman damgalı günlük mesajları |
günlükler.zaman damgası | ZAMAN DAMGASI | Günlük oluşturulduğunda |
günlükler.mesaj | SİCİM | Günlüğe kaydedilen mesaj |
galeta unu | TEKRARLANAN KAYIT | Etkinleştirilmişse, zaman damgalı Google Analytics içerik kırıntıları |
kırıntılar.timestamp | ZAMAN DAMGASI | İçerik haritasıyla ilişkili zaman damgası |
ekmek kırıntıları.name | SİCİM | Ekmek kırıntısıyla ilişkilendirilen ad |
kırıntıları.params | TEKRARLANAN KAYIT | İçerik haritasıyla ilişkili parametreler |
breadcrumbs.params.key | SİCİM | İçerik haritasıyla ilişkili bir parametre anahtarı |
Breadcrumbs.params.value | SİCİM | İçerik haritasıyla ilişkili bir parametre değeri |
suçlama_frame | KAYIT | Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve |
suçlama_frame.line | INT64 | Çerçeve dosyasının satır numarası |
suç_çerçeve.dosyası | SİCİM | Çerçeve dosyasının adı |
suçlama_frame.symbol | SİCİM | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
suçlama_frame.offset | INT64 | Kodu içeren ikili görüntünün bayt dengesi, Java istisnaları için ayarlanmadı |
suç_çerçeve.adresi | INT64 | Kodu içeren ikili görüntüdeki adres, Java çerçeveleri için ayarlanmamış |
suçlama_frame.library | SİCİM | Çerçeveyi içeren kitaplığın görünen adı |
suç_çerçeve.sahip | SİCİM | GELİŞTİRİCİ, SATICI, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM |
suç_çerçeve.suçlandı | BOOLE | Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
istisnalar | TEKRARLANAN KAYIT | Yalnızca Android: Bu etkinlik sırasında meydana gelen istisnalar. İç içe istisnalar ters kronolojik sırayla sunulur (okuyun: son kayıt, atılan ilk istisnadır) |
istisnalar.tip | SİCİM | İstisna türü, örneğin Java.lang.IllegalStateException |
istisnalar.istisna_message | SİCİM | İstisnayla ilişkili bir mesaj |
istisnalar.iç içe | BOOLE | Son atılan istisna (yani ilk kayıt) dışındaki herkes için geçerlidir |
istisnalar.title | SİCİM | Konunun başlığı |
istisnalar.altyazı | SİCİM | Konunun alt başlığı |
istisnalar.suçlanan | BOOLE | Crashlytics hatanın veya kilitlenmenin istisnadan kaynaklandığını belirlerse doğrudur |
istisnalar.çerçeveler | TEKRARLANAN KAYIT | İstisnayla ilişkili çerçeveler |
istisnalar.frames.line | INT64 | Çerçeve dosyasının satır numarası |
istisnalar.çerçeveler.dosya | SİCİM | Çerçeve dosyasının adı |
istisnalar.çerçeveler.sembol | SİCİM | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
istisnalar.kareler.offset | INT64 | Kodu içeren ikili görüntünün bayt dengesi, Java istisnaları için ayarlanmadı |
istisnalar.çerçeveler.adres | INT64 | Kodu içeren ikili görüntüdeki adres, Java çerçeveleri için ayarlanmamış |
istisnalar.frames.library | SİCİM | Çerçeveyi içeren kitaplığın görünen adı |
istisnalar.çerçeveler.sahibi | SİCİM | GELİŞTİRİCİ, SATICI, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM |
istisnalar.çerçeveler.suçlanan | BOOLE | Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
hata | TEKRARLANAN KAYIT | Yalnızca Apple uygulamaları: önemli olmayan hatalar |
error.queue_name | SİCİM | İş parçacığının çalıştığı kuyruk |
hata kodu | INT64 | Uygulamanın özel olarak günlüğe kaydedilen NSError'ıyla ilişkili hata kodu |
hata.başlık | SİCİM | Konunun başlığı |
hata.altyazı | SİCİM | Konunun alt başlığı |
hata.suçlanan | BOOLE | Crashlytics'in analizinin hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
hata.çerçeveler | TEKRARLANAN KAYIT | Stacktrace'in çerçeveleri |
error.frames.line | INT64 | Çerçeve dosyasının satır numarası |
error.frames.file | SİCİM | Çerçeve dosyasının adı |
error.frames.sembol | SİCİM | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
error.frames.offset | INT64 | Kodu içeren ikili görüntünün bayt uzaklığı |
error.frames.adres | INT64 | Kodu içeren ikili görüntüdeki adres |
error.frames.library | SİCİM | Çerçeveyi içeren kitaplığın görünen adı |
error.frames.owner | SİCİM | GELİŞTİRİCİ, SATICI, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM |
error.frames.suçlandı | BOOLE | Crashlytics'in analizinin hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
İş Parçacığı | TEKRARLANAN KAYIT | Etkinlik sırasında mevcut olan konular |
Konular.çöktü | BOOLE | İpliğin çöküp çökmediği |
threads.thread_name | SİCİM | Konunun adı |
threads.queue_name | SİCİM | Yalnızca Apple uygulamaları: İş parçacığının çalıştığı kuyruk |
threads.signal_name | SİCİM | Uygulamanın çökmesine neden olan sinyalin adı, yalnızca çöken yerel iş parçacıklarında mevcut |
threads.signal_code | SİCİM | Uygulamanın çökmesine neden olan sinyalin kodu; yalnızca çökmüş yerel ileti dizilerinde mevcut |
threads.crash_address | INT64 | Uygulamanın çökmesine neden olan sinyalin adresi; yalnızca çökmüş yerel ileti dizilerinde mevcut |
thread.code | INT64 | Yalnızca Apple uygulamaları: Uygulamanın özel olarak günlüğe kaydedilen NSError hata kodu |
thread.title | SİCİM | Konunun başlığı |
konular.altyazı | SİCİM | Konunun alt başlığı |
Konular.suçlanan | BOOLE | Crashlytics'in analizinin, kilitlenme veya hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
Konular.çerçeveler | TEKRARLANAN KAYIT | İpliğin çerçeveleri |
threads.frames.line | INT64 | Çerçeve dosyasının satır numarası |
threads.frames.file | SİCİM | Çerçeve dosyasının adı |
threads.frames.sembol | SİCİM | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
threads.frames.offset | INT64 | Kodu içeren ikili görüntünün bayt uzaklığı |
threads.frames.adres | INT64 | Kodu içeren ikili görüntüdeki adres |
threads.frames.library | SİCİM | Çerçeveyi içeren kitaplığın görünen adı |
threads.frames.sahip | SİCİM | GELİŞTİRİCİ, SATICI, ÇALIŞMA ZAMANI, PLATFORM veya SİSTEM |
threads.frames.suçlandı | BOOLE | Crashlytics'in analizinin hatanın nedeninin bu çerçeve olduğunu belirleyip belirlemediği |
birlik_metadata.unity_version | SİCİM | Bu cihazda çalışan Unity sürümü |
birlik_metadata.debug_build | BOOLE | Bu bir hata ayıklama yapısıysa |
birlik_metadata.işlemci_tipi | SİCİM | İşlemci türü |
birlik_metadata.processor_count | INT64 | İşlemci sayısı (çekirdek) |
birlik_metadata.processor_frequency_mhz | INT64 | İşlemcinin/işlemcilerin MHz cinsinden frekansı |
birlik_metadata.system_memory_size_mb | INT64 | Mb cinsinden sistem belleğinin boyutu |
birlik_metadata.graphics_memory_size_mb | INT64 | MB cinsinden grafik belleği |
birlik_metadata.graphics_device_id | INT64 | Grafik cihazının tanımlayıcısı |
birlik_metadata.graphics_device_vendor_id | INT64 | Grafik işlemci satıcısının tanımlayıcısı |
birlik_metadata.graphics_device_name | SİCİM | Grafik cihazının adı |
birlik_metadata.graphics_device_vendor | SİCİM | Grafik cihazının satıcısı |
birlik_metadata.graphics_device_version | SİCİM | Grafik cihazının sürümü |
birlik_metadata.graphics_device_type | SİCİM | Grafik aygıtının türü |
birlik_metadata.graphics_shader_level | INT64 | Grafiklerin gölgelendirici düzeyi |
birlik_metadata.graphics_render_target_count | INT64 | Grafiksel oluşturma hedeflerinin sayısı |
birlik_metadata.graphics_copy_texture_support | SİCİM | Unity API'sinde tanımlandığı şekilde grafik dokusunun kopyalanması desteği |
birlik_metadata.graphics_max_texture_size | INT64 | Doku oluşturmaya ayrılmış maksimum boyut |
birlik_metadata.screen_size_px | SİCİM | Genişlik x yükseklik olarak biçimlendirilmiş ekranın piksel cinsinden boyutu |
birlik_metadata.screen_çözünürlük_dpi | SİCİM | Kayan nokta sayısı olarak ekranın DPI değeri |
birlik_metadata.screen_refresh_rate_hz | INT64 | Hz cinsinden ekranın 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ı kolay, paylaşılması kolay ve tamamen özelleştirilebilir 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 olan Data Studio'ya Hoş Geldiniz'i deneyin.
Crashlytics rapor şablonunu kullanma
Data Studio, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik kümesi içeren Crashlytics için örnek bir rapora sahiptir. 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ı olarak hızlı bir şekilde yeni raporlar ve görselleştirmeler oluşturmak için örneği şablon olarak kullanabilirsiniz:
- Crashlytics Data Studio Kontrol Paneli şablonunu açın.
- Sağ üst köşedeki Şablonu Kullan'a tıklayın.
- Yeni Veri Kaynağı açılır menüsünde Yeni Veri Kaynağı Oluştur'u seçin.
- BigQuery kartında Seç'e tıklayın.
- Projelerim > [projenizin-adı] > firebase_crashlytics > [tablonuzun-adı] seçeneğini belirleyerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin. Toplu tablonuz her zaman seçilebilir; Crashlytics BigQuery akış dışa aktarımı etkinse bunun yerine gerçek zamanlı tablonuzu seçebilirsiniz.
- Yapılandırma altında Crashlytics Şablon düzeyini Varsayılan olarak ayarlayın.
- Yeni veri kaynağını oluşturmak için Bağlan'a tıklayın.
- Crashlytics şablonuna dönmek için Rapora Ekle'yi tıklayın.
- Son olarak Crashlytics Data Studio Kontrol Paneli şablonunun kopyasını oluşturmak için Rapor Oluştur'a tıklayın.