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 ile özel kontrol panelleri için kullanmanıza olanak tanır.
BigQuery hedefine aktarmayı etkinleştir
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 aktarmayı etkinleştirdiğinizde ne olur?
Veri kümesi konumunu 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 konumunu değiştirme başlıklı makaleyi inceleyin.
Bu konum yalnızca BigQuery hizmetine 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 ile bağlantılıdır. Daha sonra projeye eklediğiniz tüm uygulamalar ise BigQuery ile otomatik olarak 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, paket adı com.google.test
olan 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, önemli olmayan hatalar ve ANR'ler dahil olmak üzere uygulamada gerçekleşen bir etkinliği temsil eder.
BigQuery için Crashlytics akışı dışa aktarma
BigQuery akış ile Crashlytics verilerinizi gerçek zamanlı olarak canlı oynatabilirsiniz. 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.
BigQueryCrashlytics'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 bulabilirsiniz:
Toplu tablo | Anlık tablo |
---|---|
|
|
Toplu tablo, etkinlikleri yazmadan önce kalıcı olarak depoladığımız ve 30 güne kadar* tabloya doldurulabildiği için zaman içindeki trendleri belirlemek ve uzun vadeli analiz yapmak 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 ikisinden de yararlanmak için birleştirme sorgusuyla birleştirilebilir.
Varsayılan olarak, gerçek zamanlı tablonun 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ünde dolgu desteğiyle ilgili ayrıntıları görebilirsiniz.
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ükleri gibi ham kilitlenme verilerinin yanı sıra diğer verileri 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 bölümündeki 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 belgelerindeki 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ünlük kilitlenme sayısı
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.
Aşağıda, bir Android uygulaması için örnek sorgu verilmiştir. iOS uygulaması söz konusu olduğunda, uygulamanın paket kimliği ve IOS
(paket adı ve ANDROID
yerine) kimliğini 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.
Aşağıda, bir Android uygulaması için örnek sorgu verilmiştir. iOS uygulaması söz konusu olduğunda, uygulamanın paket kimliği ve IOS
(paket adı ve ANDROID
yerine) kimliğini 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 dosyasına 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: User-ID 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 beta test kullanıcıları 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.
Aşağıda, bir Android uygulaması için örnek sorgu verilmiştir. iOS uygulaması söz konusu olduğunda, uygulamanın paket kimliği ve IOS
(paket adı ve ANDROID
yerine) kimliğini 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 sorunu kimliğini tanımlamak için yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanabiliyordunuz. Ekibiniz şimdi bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını öğrenmek istiyor.
Bu sorguyu yazmak için ekibinizin 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 de dahil olmak üzere DATE tarihinden beri en sık karşılaşılan 5 sorun
Ayrıca, güvenilir toplu verilere gerçek zamanlı bilgiler eklemek için toplu ve gerçek zamanlı tabloları birleştirme sorgusuyla birleştirebilirsiniz. event_id
birincil anahtar olduğundan, ortak etkinlikleri iki tablodan tekilleştirmek için DISTINCT event_id
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, BigQuery ürününde Crashlytics verileri için yeni bir veri kümesi oluşturur. Veri kümesi, birden fazla uygulama içerse 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 sizin tanımladığınız özel Crashlytics anahtarlarının yanı sıra standart bir Crashlytics verileri grubunu 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 kaynağından BigQuery hedefine akış dışa aktarma özelliği etkinleştirilirse gerçek zamanlı tablo, toplu tabloyla aynı sütunlara sahip olur. Yığın izleme içermeyen etkinlikleri temsil eden satırlarda sütunlar olabileceğini unutmayın.
Dışa aktarma işlemindeki sütunlar aşağıdaki tabloda listelenmiştir:
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 projesinde kayıtlı olan uygulamanın benzersiz tanımlayıcısı
(örneğin, com.google.gmail Apple platform uygulamaları için uygulamanın paket kimliğidir. Android uygulamaları için 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şkilendirilmiş sorun varyantı Tüm etkinliklerin ilişkilendirilmiş bir sorun varyantı 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 baytı |
memory.free |
INT64 | Kalan bellek miktarı (bayt) |
storage |
KAYIT | Cihazın kalıcı depolama alanı |
storage.used |
İT64 | Kullanılan depolama alanı bayt sayısı |
storage.free |
INT64 | Kalan depolama alanı (bayt) |
operating_system |
KAYIT | Cihazdaki işletim sistemiyle ilgili 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 (örneğin, jailbreak'li bir uygulamanın MODIFIED , rootlanmış bir uygulamanın ise UNMODIFIED olması) |
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ü (örneğin, 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 |
TEKRARLANAN KAYIT | Geliştirici tarafından tanımlanan anahtar/değer çiftleri |
custom_keys.key |
DİZE | Geliştirici tarafından tanımlanmış 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ştirilirse Crashlytics günlük kaydedici 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 | Sayfa yolu ile 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 | İçerik haritasıyla ilişkili parametre değeri |
blame_frame |
KAYIT | Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve |
blame_frame.line |
İT64 | Ç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 resimdeki bayt ofseti Java istisnaları için ayarlanmamış |
blame_frame.address |
INT64 | İkili görüntüdeki kodu içeren adres Java çerçeveleri için ayarlanmamıştır |
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ırayla 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 durumlar 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 resimdeki bayt ofseti Java istisnaları için ayarlanmamış |
exceptions.frames.address |
INT64 | İkili görüntüdeki kodu içeren adres Java çerçeveleri için ayarlanmamıştır |
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 resme giden bayt farkı |
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 ileti 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 kilitlenmesine neden olan sinyalin kodu (yalnızca kilitlenen yerel iş parçacıklarında bulunur) |
threads.crash_address |
INT64 | Uygulamanın kilitlenmesine neden olan sinyalin adresi; yalnızca çökmüş yerel iş parçacıklarında 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 | İleti dizisinin çerçeveleri |
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 | Hidrat sembolü veya hidyalatılmış değilse ham simgesi |
threads.frames.offset |
İT64 | Kodu içeren ikili resme giden bayt farkı |
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 |
İT64 | İş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 |
İT64 | 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 |
İT64 | 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 cinsinden) |
unity_metadata.screen_refresh_rate_hz |
İT64 | 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, Crashlytics için dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren örnek bir rapor sunar. 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 Template level (Şablon düzeyi) seçeneğini 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 ihracat altyapısına geçin
Ekim 2024'ün ortalarında Crashlytics, Crashlytics verilerini BigQuery'a aktarmak için yeni bir altyapı kullanıma sundu. Şimdilik 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 ortasında veya sonrasında 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ı ile, etkinleştirme tarihinden 30 gün öncesine kadar formu doldurabilirsiniz.) 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 projenizde kayıtlı tüm Firebase uygulamalarını bulmak için aşağıdaki adımları uygulayın:
Firebase konsolunda Proje ayarları bölümüne gidin.
Uygulamalarınız kartına gidin ve kimliği 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ı aksatmaması 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 yükseltme
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 aktarmayı hemen etkinleştirmek için Crashlytics kaydırma çubuğunu 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.