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
- Firebase konsolunda Entegrasyonlar sayfasına gidin.
- BigQuery kartında Bağla'yı tıklayın.
- BigQuery'yi etkinleştirmek için ekrandaki talimatları uygulayın.
Projenizi BigQuery'ye bağladığınızda:
- Firebase, Firebase projenizden BigQuery'ye veri senkronizasyonunu her gün ayarlar.
- Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ye bağlanır. Daha sonra projeye eklediğiniz tüm uygulamalar ise 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. Her bağlantılı uygulama için bu, günlük senkronizasyondaki verileri içeren bir toplu iş tablosu içerir.
- Crashlytics BigQuery akışını dışa aktarmayı etkinleştirirseniz bağlı tüm uygulamalarda, sürekli güncellenen verileri içeren bir gerçek zamanlı tablo da bulunur.
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 |
---|---|
|
|
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:
Google Analytics için BigQuery dışa aktarmalarını etkinleştirin. Proje verilerini BigQuery'ye aktarma başlıklı makaleyi inceleyin.
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");
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:
- Crashlytics Data Studio Kontrol Paneli şablonunu açın.
- Sağ üst köşedeki Use Template (Şablonu Kullan) seçeneğini tıklayın.
- Yeni Veri Kaynağı açılır listesinde Yeni Veri Kaynağı Oluştur'u seçin.
- BigQuery kartında Seç'i tıklayın.
- 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.
- Yapılandırma bölümünde, Crashlytics Şablon düzeyi'ni Varsayılan olarak ayarlayın.
- Yeni veri kaynağını oluşturmak için Bağlan'ı tıklayın.
- Crashlytics şablonuna dönmek için Rapora Ekle'yi tıklayın.
- Son olarak, Crashlytics Data Studio Kontrol Paneli şablon kopyanızı oluşturmak için Rapor Oluştur'u tıklayın.