Daha ayrıntılı analiz için Firebase Crashlytics verilerinizi BigQuery'e 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 oluşturmak için kullanmanıza olanak tanır.
BigQuery biçimine aktarmayı etkinleştirme
Firebase konsolunda Entegrasyonlar sayfasına gidin.
BigQuery kartında Bağlantı'yı tıklayın.
BigQuery'e dışa aktarma özelliğini etkinleştirmek için ekrandaki talimatları uygulayın.
BigQuery'daki Crashlytics verilerinize neredeyse anlık erişim istiyorsanız akış dışa aktarma özelliğine geçiş yapabilirsiniz.
Dışa aktarma özelliğini etkinleştirdiğinizde ne olur?
Veri kümesi konumunu siz seçersiniz. Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya manuel olarak farklı bir konuma taşıyabilir (yeniden oluşturabilirsiniz). Daha fazla bilgi için Mevcut dışa aktarma işlemlerinin yerini değiştirme başlıklı makaleyi inceleyin.
Bu konum yalnızca BigQuery'e aktarılan veriler için geçerlidir ve Firebase konsolunun Crashlytics kontrol panelinde veya Android Studio'da kullanılmak üzere depolanan verilerin konumunu etkilemez.
Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ye bağlanı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, verilerinizin BigQuery ile günlük senkronizasyonunu ayarlar.
Projenizi bağladıktan sonra, ilk veri kümenizin BigQuery'e aktarılması için genellikle bir sonraki günün senkronizasyonunu beklemeniz gerekir.
Günlük senkronizasyon, BigQuery'te ayarlamış olabileceğiniz planlı dışa aktarma işlemlerinden bağımsız olarak günde bir kez gerçekleşir. Senkronizasyon işinin zamanlamasının ve süresinin değişebileceğini unutmayın. Bu nedenle, yayın sonrası işlemleri veya işleri dışa aktarma işleminin belirli bir zamanlamasına göre planlamanızı önermeyiz.
Firebase, BigQuery'ye mevcut verilerinizin bir kopyasını dışa aktarır. Dışa aktarma işlemi için verilerin ilk yayılması 48 saati bulabilir.
Bu dışa aktarma işlemi, bağlı her uygulama için günlük senkronizasyondaki verileri içeren bir toplu tablo içerir.
Toplu tablo için son 30 güne kadar veri doldurma işlemlerini manuel olarak planlayabilir veya BigQuery'e dışa aktarma özelliğini etkinleştirdiğiniz en son tarihe kadar (hangisi daha yeniyse) planlayabilirsiniz.
Crashlytics verilerinin dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz dışa aktarma özelliğini etkinleştirdiğiniz günden 30 gün öncesini de doldurabileceğinizi unutmayın.
Crashlytics akış dışa aktarma özelliğini BigQuery'e etkinleştirirseniz bağlı tüm uygulamalarda sürekli güncellenen verileri içeren bir gerçek zamanlı tablo da olur.
BigQuery'e dışa aktarma özelliğini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.
BigQuery alanına 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ümesi içinde ayrı tablolar oluşturulur. Firebase, tabloları uygulamanın tanımlayıcısına göre adlandırır. Noktalar alt çizgiye dönüştürülür ve sonuna bir platform adı eklenir.
Örneğin, com.google.test
paket adına sahip bir Android uygulamasının verileri com_google_test_ANDROID
adlı bir tabloda bulunur. Bu toplu tablo her gün bir kez güncellenir. Crashlytics akış dışa aktarma özelliğini BigQuery için etkinleştirirseniz Crashlytics verileri com_google_test_ANDROID_REALTIME
adlı bir tabloya da anlık olarak aktarılır.
Tablodaki her satır, kilitlenmeler, kritik olmayan hatalar ve ANR'ler dahil olmak üzere uygulamada gerçekleşen bir etkinliği temsil eder.
Crashlytics akışını BigQuery'a aktarma
BigQuery Akış ile Crashlytics verilerinizi anlık olarak yayınlayabilirsiniz. Canlı veriler gerektiren herhangi bir amaç için (ör. canlı bir kontrol panelinde bilgi sunma, kullanıma sunma işlemini canlı izleme veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izleme) kullanabilirsiniz.
Crashlytics'e BigQuery akış dışa aktarma özelliğini etkinleştirdiğinizde, toplu tabloya ek olarak gerçek zamanlı bir tablo da elde edersiniz. Tablolar arasındaki farklar aşağıda belirtilmiştir:
Toplu tablo | Anlık tablo |
---|---|
|
|
Etkinlikleri yazmadan önce kalıcı olarak depoladığımız ve 30 güne kadar* tabloya geri doldurulabildikleri için toplu tablo, uzun vadeli analizler yapmak ve zaman içindeki trendleri belirlemek için idealdir. Gerçek zamanlı tablonuza veri yazdığımızda verileri BigQuery'e hemen yazarız. Bu nedenle, canlı gösterge tabloları ve özel uyarılar için idealdir. Bu iki tablo, her ikisinin avantajlarından yararlanmak için birleştirme sorgusuyla birleştirilebilir.
Gerçek zamanlı tablonun varsayılan bölüm geçerlilik süresi 30 gündür. Bunu nasıl değiştireceğinizi öğrenmek için BigQuery dokümanlarında Bölümün geçerlilik süresini ayarlama bölümüne bakın.
* Yeni dışa aktarma altyapısına yükseltme bölümündeki ek bilgi bölümünde, doldurma desteği hakkında ayrıntılı bilgi edinin.
Crashlytics akışlarını BigQuery'a dışa aktarmayı etkinleştirme
Firebase konsolunda Entegrasyonlar sayfasına gidin.
BigQuery kartında Yönet'i tıklayın.
Akışları dahil et onay kutusunu işaretleyin.
Bu işlem, bağlı tüm uygulamalarınızda akış özelliğini etkinleştirir.
Dışa aktarılan verilerle neler yapabilirsiniz?
BigQuery'e yapılan dışa aktarma işlemleri, 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.
Bu sayfanın ilerleyen bölümlerinde, hangi Crashlytics verilerinin dışa aktarıldığını ve tablo şema bilgilerini inceleyin.
Data Studio şablonu kullanma
Data Studio şablonunuzda gerçek zamanlı verileri etkinleştirmek için Dışa aktarılan Crashlytics verilerini Data Studio ile görselleştirme başlıklı makaledeki talimatları uygulayın.
Görünüm oluşturma
BigQuery kullanıcı arayüzünü kullanarak sorguları görünümlere dönüştürebilirsiniz. Ayrıntılı talimatlar için BigQuery dokümanlarında Görünüm oluşturma bölümüne bakın.
Sorguları çalıştırma
Aşağıdaki örneklerde, kilitlenme etkinliği verilerini daha kolay anlaşılır özetlerde toplayan raporlar oluşturmak için Crashlytics verileriniz üzerinde çalıştırabileceğiniz sorgular gösterilmektedir. Bu tür raporlar Firebase konsolunun Crashlytics kontrol panelinde bulunmadığından kilitlenme verilerini analiz etmenize ve anlamanıza yardımcı olabilir.
1. örnek: Güne göre kilitlenmeler
Mümkün olduğunca fazla hatayı düzeltmek için çalıştıktan sonra ekibinizin yeni fotoğraf paylaşım uygulamanızı kullanıma sunmaya hazır olduğunu düşünüyorsunuz. Bunu yapmadan önce, hata giderme çalışmanızın uygulamayı zaman içinde daha kararlı hale getirdiğinden emin olmak için son bir aydaki günlük kilitlenme sayısını kontrol etmek istiyorsunuz.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
2. örnek: En yaygın kilitlenme noktalarını bulma
Üretim planlarına uygun şekilde öncelik vermek için uygulamanızda en yaygın 10 kilitlenmeyi bulmak istersiniz. Alakalı veri noktalarını sağlayan bir sorgu oluşturursunuz.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
3. örnek: Kilitlenen ilk 10 cihaz
Sonbahar, yeni telefon sezonudur. Şirketiniz, bu durumun özellikle Android için yeni cihaza özgü sorunlar sezonu anlamına geldiğini de biliyor. Yaklaşan uyumluluk sorunlarını önlemek için, son bir haftada (168 saat) en çok kilitlenme yaşayan 10 cihazı tanımlayan bir sorgu oluşturursunuz.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
4. Örnek: Özel anahtara göre filtreleme
Oyununuzun hangi seviyesinde en çok kilitlenme yaşandığını öğrenmek isteyen bir oyun geliştiricisiniz.
Bu istatistiği izlemeye yardımcı olmak için current_level
adlı bir özel Crashlytics anahtarı oluşturur ve kullanıcı yeni bir seviyeye her ulaştığında bu anahtarı güncellersiniz.
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Java
Crashlytics.setInt("current_level", 3);
BigQuery'ye dışa aktardığınız bu anahtarla, her kilitlenme etkinliğiyle ilişkili current_level
değerlerinin dağılımını bildirmek için bir sorgu yazabilirsiniz.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
5. örnek: Kullanıcı kimliği ayıklama
Erken erişim kapsamında bir Android uygulamanız var. Kullanıcılarınızın çoğu uygulamayı seviyor ancak üç kullanıcı alışılmadık sayıda kilitlenmeyle karşılaşmış. Sorunun temel nedenini bulmak için kullanıcı kimliklerini kullanarak bu kullanıcıların tüm kilitlenme etkinliklerini çeken bir sorgu yazarsınız.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT * FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3") ORDER BY user.id
6. örnek: Belirli bir kilitlenme sorunuyla karşılaşan tüm kullanıcıları bulma
Ekibiniz, kritik bir hatayı yanlışlıkla bir beta test kullanıcısı grubuna yayınladı. Ekibiniz, belirli kilitlenme sorunu kimliğini belirlemek için yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanabildi. Ekibiniz şimdi bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT user.id as user_id FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE issue_id = "ISSUE_ID" AND application.display_version = "APP_VERSION" AND user.id != "" ORDER BY user.id;
7. örnek: Kilitlenme sorunundan etkilenen kullanıcıların sayısı, ülkeye göre ayrılmış şekilde
Ekibiniz, yeni bir sürümün kullanıma sunulma sürecinde kritik bir hata tespit etti. Belirli bir kilitlenme sorununun kimliğini belirlemek için yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanabildiniz. Ekibimiz şimdi bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını öğrenmek istiyor.
Ekibinizin bu sorguyu yazması için aşağıdakileri yapması gerekir:
Google Analytics verilerini BigQuery'ye aktarmayı etkinleştirin. Proje verilerini BigQuery'ye aktarma başlıklı makaleyi inceleyin.
Uygulamanızı, hem Google Analytics SDK'sına hem de Crashlytics SDK'sına kullanıcı kimliği iletecek şekilde güncelleyin.
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Google Analytics veri kümesindeki etkinlikleri Crashlytics veri kümesindeki kilitlenmelerle birleştirmek için kullanıcı kimliği alanını kullanan bir sorgu yazın.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve
IOS
'ü (paket adı veANDROID
yerine) kullanın.SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
8. Örnek: Bugüne kadarki en önemli 5 sorun
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
9. örnek: Bugün dahil olmak üzere DATE tarihinden sonraki en önemli 5 sorun
Ayrıca, güvenilir toplu verilere anlık bilgiler eklemek için toplu ve anlık tabloları bir birleştirme sorgusuyla birleştirebilirsiniz. event_id
birincil anahtar olduğundan, iki tablodaki ortak etkinlikleri tekilleştirmek için DISTINCT event_id
'u kullanabilirsiniz.
Android uygulaması için örnek bir sorgu aşağıda verilmiştir. iOS uygulaması için paket kimliğini ve IOS
'ü (paket adı ve ANDROID
yerine) kullanın.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= "YYYY_MM_DD" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
BigQuery'daki Crashlytics şemasını anlama
Crashlytics verilerini BigQuery'a aktarma işlemini ayarlarken Firebase, bağlantıdan iki gün öncesine kadarki etkinlikler de dahil olmak üzere son etkinlikleri (kilitlenmeler, kritik olmayan hatalar ve ANR'ler) dışa aktarır. Ayrıca, 30 güne kadar doldurma seçeneği de sunulur.
Bu noktadan itibaren, dışa aktarma işlemini 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'te kullanılabilir hale gelmesi birkaç dakika sürebilir.
Veri kümeleri
Crashlytics, Crashlytics verileri için BigQuery'te yeni bir veri kümesi oluşturur. Veri kümesi, birden fazla uygulamanız olsa bile projenizin tamamını kapsar.
Tablolar
Crashlytics, ilgili uygulamanın verilerini dışa aktarmayı devre dışı bırakmadığınız sürece projenizdeki her uygulama için veri kümesinde bir tablo oluşturur. Firebase, tabloları uygulamanın tanımlayıcısına göre adlandırır. Noktalar alt çizgiye dönüştürülür ve sonuna bir platform adı eklenir.
Örneğin, com.google.test
paket adına sahip bir Android uygulamasının verileri com_google_test_ANDROID
adlı bir tabloda, gerçek zamanlı veriler (etkinleştirildiyse) ise com_google_test_ANDROID_REALTIME
adlı bir tabloda bulunur.
Tablolar, uygulamanızda tanımladığınız özel Crashlytics anahtarlarının yanı sıra standart bir Crashlytics veri grubu içerir.
Satırlar
Tablodaki her satır, uygulamanın karşılaştığı bir hatayı temsil eder.
Sütunlar
Tablodaki sütunlar kilitlenmeler, onarılabilir hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery'a akış dışa aktarma etkinse anlık tablo, toplu tabloyla aynı sütunlara sahip olur. Satırlarda yığın izlemesi olmayan etkinlikleri temsil eden sütunlar olabileceğini unutmayın.
Dışa aktarımdaki sütunlar bu tabloda listelenmektedir:
Alan adı | Veri türü | Açıklama |
---|---|---|
platform |
DİZE | Firebase projesine kayıtlı uygulama platformu (geçerli değerler: IOS veya ANDROID )
|
bundle_identifier |
DİZE | Firebase projesine kaydedilen uygulamanın benzersiz tanımlayıcısıdır (ör. com.google.gmail Apple platform uygulamalarında bu, uygulamanın paket kimliğidir. Android uygulamalarında bu, uygulamanın paket adıdır. |
event_id |
DİZE | Etkinliğin benzersiz kimliği |
is_fatal |
BOOLE | Uygulamanın kilitlenip kilitlenmediği |
error_type |
DİZE | Etkinliğin hata türü (ör. FATAL , NON_FATAL , ANR vb.) |
issue_id |
DİZE | Etkinlikle ilişkili sorun |
variant_id |
DİZE | Bu etkinlikle ilişkili sorun varyantı Tüm etkinliklerin ilişkili bir sorun varyantına sahip olmadığını unutmayın. |
event_timestamp |
ZAMAN DAMGASI | Etkinliğin gerçekleştiği zaman |
device |
KAYIT | Etkinliğin gerçekleştiği cihaz |
device.manufacturer |
DİZE | Cihaz üreticisi |
device.model |
DİZE | Cihaz modeli |
device.architecture |
DİZE | Örneğin, X86_32 , X86_64 , ARMV7 ,
ARM64 , ARMV7S veya ARMV7K |
memory |
KAYIT | Cihazın bellek durumu |
memory.used |
INT64 | Kullanılan bellek baytları |
memory.free |
INT64 | Kalan bellek miktarı (bayt) |
storage |
KAYIT | Cihazın kalıcı depolama alanı |
storage.used |
INT64 | Kullanılan depolama alanı bayt sayısı |
storage.free |
INT64 | Kalan depolama alanı (bayt) |
operating_system |
KAYIT | Cihazdaki işletim sisteminin ayrıntıları |
operating_system.display_version |
DİZE | Cihazdaki işletim sistemi sürümü |
operating_system.name |
DİZE | Cihazdaki işletim sisteminin adı |
operating_system.modification_state |
DİZE | Cihazın değiştirilip değiştirilmediği (ör. jailbreak'li uygulama MODIFIED , rootlanmış uygulama UNMODIFIED olur) |
operating_system.type |
DİZE | (Yalnızca Apple uygulamaları) Cihazdaki işletim sisteminin türü (ör. IOS , MACOS vb.) |
operating_system.device_type |
DİZE | Cihaz türü (ör. MOBILE , TABLET , TV vb.); "cihaz kategorisi" olarak da bilinir |
application |
KAYIT | Etkinliği oluşturan uygulama |
application.build_version |
DİZE | Uygulamanın derleme sürümü |
application.display_version |
DİZE | |
user |
KAYIT | (İsteğe bağlı) Uygulamanın kullanıcısı hakkında toplanan bilgiler |
user.name |
DİZE | (İsteğe bağlı) Kullanıcının adı |
user.email |
DİZE | (İsteğe bağlı) Kullanıcının e-posta adresi |
user.id |
DİZE | (İsteğe bağlı) Kullanıcıyla ilişkilendirilmiş uygulamaya özel kimlik |
custom_keys |
TEKRAR KAYIT | Geliştirici tarafından tanımlanan anahtar/değer çiftleri |
custom_keys.key |
DİZE | Geliştirici tarafından tanımlanan bir anahtar |
custom_keys.value |
DİZE | Geliştirici tarafından tanımlanan bir değer |
installation_uuid |
DİZE | Benzersiz bir uygulama ve cihaz yüklemesini tanımlayan kimlik |
crashlytics_sdk_versions |
DİZE | Etkinliği oluşturan Crashlytics SDK sürümü |
app_orientation |
DİZE | Örneğin, PORTRAIT , LANDSCAPE ,
FACE_UP , FACE_DOWN vb. |
device_orientation |
DİZE | Örneğin, PORTRAIT , LANDSCAPE ,
FACE_UP , FACE_DOWN vb. |
process_state |
DİZE | BACKGROUND veya FOREGROUND |
logs |
TEKRAR KAYIT | Etkinleştirildiyse Crashlytics günlükleyici tarafından oluşturulan zaman damgalı günlük mesajları |
logs.timestamp |
ZAMAN DAMGASI | Günlüğün oluşturulduğu tarih |
logs.message |
DİZE | Günlüğe kaydedilen mesaj |
breadcrumbs |
TEKRAR KAYIT | Etkinleştirildiyse zaman damgalı Google Analytics içerik haritaları |
breadcrumbs.timestamp |
ZAMAN DAMGASI | Gezinme menüsüyle ilişkili zaman damgası |
breadcrumbs.name |
DİZE | Gezinme menüsüyle ilişkili ad |
breadcrumbs.params |
TEKRAR KAYIT | Sayfa yolu ile ilişkili parametreler |
breadcrumbs.params.key |
DİZE | Gezinme menüsüyle ilişkili bir parametre anahtarı |
breadcrumbs.params.value |
DİZE | Gezinme menüsüyle ilişkili bir parametre değeri |
blame_frame |
KAYIT | Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve |
blame_frame.line |
INT64 | Çerçevenin dosyasının satır numarası |
blame_frame.file |
DİZE | Çerçeve dosyasının adı |
blame_frame.symbol |
DİZE | Sulandırılmış simgesi veya sulandırılamayansa ham simgesi |
blame_frame.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt ofseti Java istisnaları için ayarlanmamış |
blame_frame.address |
INT64 | Kodu içeren ikili resimdeki adres Java çerçeveleri için ayarlanmadı |
blame_frame.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
blame_frame.owner |
DİZE | Örneğin, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM veya SYSTEM |
blame_frame.blamed |
BOOLE | Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi |
exceptions |
TEKRAR KAYIT | (Yalnızca Android) Bu etkinlik sırasında gerçekleşen istisnalar. İç içe yerleştirilmiş istisnalar, kronolojik olarak ters sırada sunulur. Yani son kayıt, oluşturulan ilk istisnadır. |
exceptions.type |
DİZE | İstisna türü (örneğin, java.lang.IllegalStateException) |
exceptions.exception_message |
DİZE | İstisnayla ilişkili bir mesaj |
exceptions.nested |
BOOLE | Son oluşturulan istisna dışındaki tüm değerler için doğrudur (yani ilk kayıt). |
exceptions.title |
DİZE | İleti dizisinin başlığı |
exceptions.subtitle |
DİZE | İleti dizisinin alt başlığı |
exceptions.blamed |
BOOLE | Crashlytics, hatadan veya kilitlenmeden istisna sorumlu olduğunu belirlerse doğru değerini döndürür. |
exceptions.frames |
TEKRAR KAYIT | İstisnayla ilişkili kareler |
exceptions.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
exceptions.frames.file |
DİZE | Çerçeve dosyasının adı |
exceptions.frames.symbol |
DİZE | Sulandırılmış simgesi veya sulandırılamayansa ham simgesi |
exceptions.frames.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt ofseti Java istisnaları için ayarlanmamış |
exceptions.frames.address |
INT64 | Kodu içeren ikili resimdeki adres Java çerçeveleri için ayarlanmadı |
exceptions.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
exceptions.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM veya SYSTEM |
exceptions.frames.blamed |
BOOLE | Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi |
error |
TEKRAR KAYIT | (Yalnızca Apple uygulamaları) önemli olmayan hatalar |
error.queue_name |
DİZE | Mesaj dizisinin çalıştığı sıra |
error.code |
INT64 | Uygulamanın özel olarak günlüğe kaydedilen NSError ile ilişkili hata kodu |
error.title |
DİZE | İleti dizisinin başlığı |
error.subtitle |
DİZE | İleti dizisinin alt başlığı |
error.blamed |
BOOLE | Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi |
error.frames |
TEKRAR KAYIT | Yığın izlemenin çerçeveleri |
error.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
error.frames.file |
DİZE | Çerçeve dosyasının adı |
error.frames.symbol |
DİZE | Sulandırılmış simgesi veya sulandırılamayansa ham simgesi |
error.frames.offset |
INT64 | Kodu içeren ikili resimdeki bayt ofseti |
error.frames.address |
INT64 | İkili resimde kodu içeren adres |
error.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
error.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM veya SYSTEM |
error.frames.blamed |
BOOLE | Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi |
threads |
TEKRAR KAYIT | Etkinlik sırasında mevcut olan mesaj dizileri |
threads.crashed |
BOOLE | Mesaj dizisinin kilitlenip kilitlenmediği |
threads.thread_name |
DİZE | İleti dizisinin adı |
threads.queue_name |
DİZE | (Yalnızca Apple uygulamaları) İleti dizisinin çalıştığı sıra |
threads.signal_name |
DİZE | Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca kilitlenen yerel mesaj dizilerinde bulunur. |
threads.signal_code |
DİZE | Uygulamanın çökmesine neden olan sinyalin kodu; yalnızca çöken yerel mesaj dizilerinde bulunur |
threads.crash_address |
INT64 | Uygulamanın kilitlenmesine neden olan sinyalin adresi. Yalnızca kilitlenen yerel mesaj dizilerinde bulunur. |
threads.code |
INT64 | (Yalnızca Apple uygulamaları) Uygulamanın özel olarak günlüğe kaydedilen NSError hata kodu |
threads.title |
DİZE | İleti dizisinin başlığı |
threads.subtitle |
DİZE | İleti dizisinin alt başlığı |
threads.blamed |
BOOLE | Crashlytics'ün, kilitlenmenin veya hatanın nedeninin bu çerçeve olduğunu belirlemesi |
threads.frames |
TEKRAR KAYIT | Mesaj dizisinin kareleri |
threads.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
threads.frames.file |
DİZE | Çerçeve dosyasının adı |
threads.frames.symbol |
DİZE | Sulandırılmış simgesi veya sulandırılamayansa ham simgesi |
threads.frames.offset |
INT64 | Kodu içeren ikili resimdeki bayt ofseti |
threads.frames.address |
INT64 | İkili resimde kodu içeren adres |
threads.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
threads.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR ,
RUNTIME , PLATFORM veya SYSTEM |
threads.frames.blamed |
BOOLE | Crashlytics'ün, hatanın nedeninin bu çerçeve olduğunu belirlemesi |
unity_metadata.unity_version |
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 | İşlemcinin türü |
unity_metadata.processor_count |
INT64 | İşlemci (çekirdek) sayısı |
unity_metadata.processor_frequency_mhz |
INT64 | İşlemcilerin MHz cinsinden frekansı |
unity_metadata.system_memory_size_mb |
INT64 | Sistem belleğinin boyutu (Mb cinsinden) |
unity_metadata.graphics_memory_size_mb |
INT64 | MB cinsinden ekran kartı belleği |
unity_metadata.graphics_device_id |
INT64 | Grafik cihazının tanımlayıcısı |
unity_metadata.graphics_device_vendor_id |
INT64 | Grafik işlemcinin tedarikçisinin tanımlayıcısıdır. |
unity_metadata.graphics_device_name |
DİZE | Grafik cihazının adı |
unity_metadata.graphics_device_vendor |
DİZE | Grafik cihazının tedarikçisi |
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ü |
unity_metadata.graphics_shader_level |
INT64 | Grafiklerin gölgelendirici seviyesi |
unity_metadata.graphics_render_target_count |
INT64 | Grafik oluşturma hedeflerinin sayısı |
unity_metadata.graphics_copy_texture_support |
DİZE | Unity API'de tanımlandığı şekilde grafik dokusunun kopyalanması desteği |
unity_metadata.graphics_max_texture_size |
INT64 | Doku oluşturmaya ayrılmış maksimum boyut |
unity_metadata.screen_size_px |
DİZE | Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilir) |
unity_metadata.screen_resolution_dpi |
DİZE | Ekranın DPI'si (kayan nokta sayısı) |
unity_metadata.screen_refresh_rate_hz |
INT64 | Ekranın yenileme hızı (Hz) |
Dışa aktarılan Crashlytics verilerini Data Studio ile görselleştirme
Google Data Studio, BigQuery'daki Crashlytics veri kümelerinizi okunması ve paylaşılması daha kolay, tamamen özelleştirilebilen raporlara dönüştürür.
Data Studio'yu kullanma hakkında daha fazla bilgi edinmek için Data Studio'ya hoş geldiniz başlıklı Data Studio hızlı başlangıç kılavuzunu deneyin.
Crashlytics rapor şablonu kullanma
Data Studio'da, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren Crashlytics için örnek bir rapor bulunur. Crashlytics'ten BigQuery'e akış dışa aktarma özelliğini etkinleştirdiyseniz bu verileri Data Studio şablonunun Anlık trendler sayfasında görüntüleyebilirsiniz.Kendi uygulamanızın ham kilitlenme verilerine göre hızlıca yeni raporlar ve görselleştirmeler oluşturmak için örneği şablon olarak kullanabilirsiniz:
Sağ üst köşedeki Şablonu Kullan'ı 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 > PROJECT_ID > firebase_crashlytics > TABLE_NAME'ı seçerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin.
Toplu tablonuz her zaman seçilebilir durumdadır. CrashlyticsBigQuery'a akış dışa aktarma 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, CrashlyticsData Studio kontrol paneli şablonunun kopyasını oluşturmak için Rapor Oluştur'u tıklayın.
Yeni dışa aktarma altyapısına geçiş
Ekim 2024'ün ortalarında Crashlytics, Crashlytics verilerini BigQuery'a aktarmak için yeni bir altyapı kullanıma sundu. Şu anda bu yeni altyapıya geçmek isteğe bağlıdır.
Bu yeni altyapı, Amerika Birleşik Devletleri dışındaki Crashlytics veri kümesi konumlarını destekler.
Dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz dilerseniz veri dışa aktarma konumunu BigQuery tarafından desteklenen herhangi bir veri kümesi konumuyla değiştirebilirsiniz.
Dışa aktarmayı Ekim 2024'ün ortalarında veya daha sonra etkinleştirdiyseniz kurulum sırasında BigQuery tarafından desteklenen herhangi bir veri kümesi konumunu seçebilirsiniz.
Yeni altyapıdaki bir diğer fark da, dışa aktarma özelliğini etkinleştirmeden önceki verileri doldurmayı desteklememesidir. (Eski altyapıda, etkinleştirme tarihinden 30 gün öncesine kadar geriye dönük doldurma işlemi yapabilirsiniz.) Yeni altyapı, son 30 güne kadar doldurma veya BigQuery'e dışa aktarma özelliğini etkinleştirdiğiniz en son tarihe kadar (hangisi daha yeniyse) doldurma işlemlerini destekler.
Yükseltme için ön koşul
Yeni altyapıya geçmeden önce aşağıdaki ön koşulu karşıladığınızı onaylayın: Mevcut toplu BigQuery tablolarınız, kayıtlı Firebase uygulamalarınız için ayarlanan paket kimlikleriyle veya paket adlarıyla eşleşen tanımlayıcılara sahiptir.
Örneğin:
com_yourcompany_yourproject_IOS
adlı bir BigQuery tablonuz varsa Firebase projenizecom.yourcompany.yourproject
paket kimliğiyle kayıtlı bir Firebase iOS+ uygulamanız olmalıdır.com_yourcompany_yourproject_ANDROID
adlı bir BigQuery tablonuz varsa Firebase projenizecom.yourcompany.yourproject
paket adıyla kayıtlı bir Firebase Android uygulamanız olmalıdır.
Firebase projenize kayıtlı tüm Firebase uygulamalarını bulmak için:
Firebase konsolunda, Proje ayarlarınıza gidin.
Uygulamalarınız kartına gidin ve ardından kimliği de dahil olmak üzere uygulamanın bilgilerini görüntülemek için istediğiniz Firebase uygulamasını tıklayın.
Yeni dışa aktarma altyapısı, her uygulamanın verilerini kayıtlı Firebase uygulaması için ayarlanan paket adına veya paket kimliğine göre dışa aktarır. BigQuery iş akışınızın kesintiye uğramaması için mevcut toplu tablolarınızın doğru adlara sahip olduğundan emin olmanız önemlidir. Böylece yeni altyapı, tüm yeni verileri mevcut tablolara ekleyebilir. Kayıtlı Firebase uygulamalarınızla eşleşmeyen toplu tablo adlarınız varsa ancak yine de yükseltme yapmak istiyorsanız Firebase Destek Ekibi ile iletişime geçin.
Yeni altyapıya geçme
Dışa aktarma özelliğini zaten etkinleştirdiyseniz Crashlytics veri dışa aktarma özelliğini Firebase konsolunda kapatıp tekrar açarak yeni altyapıya geçebilirsiniz.
Ayrıntılı adımlar aşağıda verilmiştir:
Firebase konsolunda Entegrasyonlar sayfasına gidin.
BigQuery kartında Yönet'i tıklayın.
Dışa aktarmayı devre dışı bırakmak için Crashlytics kaydırma çubuğunu kapatın. İstendiğinde, veri dışa aktarma işlemini durdurmak istediğinizi onaylayın.
Dışa aktarma özelliğini yeniden etkinleştirmek için Crashlytics kaydırma çubuğunu hemen tekrar açın. İstendiğinde verileri dışa aktarmak istediğinizi onaylayın.
Crashlytics verilerini BigQuery'a dışa aktarma işleminiz artık yeni dışa aktarma altyapısını kullanıyor.