Firebase Crashlytics verilerinizi daha ayrıntılı analiz için BigQuery'ye aktarabilirsiniz. BigQuery, verileri BigQuery SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve Looker Studio ile görselleştirme ve özel kontrol panelleri için kullanmanıza olanak tanır.
Dışa aktarılan verilerle neler yapabilirsiniz?
BigQuery dışa aktarma işlemlerinde cihaz türü, işletim sistemi, istisnalar (Android uygulamaları) veya hatalar (Apple uygulamaları) ve Crashlytics günlükleri dahil olmak üzere ham kilitlenme verileri ve diğer veriler yer alır. Hangi Crashlytics verilerin dışa aktarıldığını ve bunların tablo şemasını bu sayfanın ilerleyen kısımlarında inceleyebilirsiniz.
Dışa aktarılan Crashlytics verilerinizle yapabileceklerinize dair bazı örnekler:
Sorgu çalıştırma
Kilitlenme etkinliği verilerini daha kolay anlaşılır özetler halinde toplayan raporlar oluşturmak için Crashlytics verilerinizde sorgu çalıştırabilirsiniz. Bu tür raporlar Crashlytics konsolunun Firebase kontrol panelinde kullanılamadığından, kilitlenme verileriyle ilgili analiz ve anlayışınızı tamamlayabilirler. Bu sayfanın ilerleyen bölümlerinde örnek sorgular bulabilirsiniz.Looker Studio şablonu kullanma
Crashlytics, dışa aktarılan verilerinizi görselleştirmek için önceden oluşturulmuş Looker Studio şablonu sunar.Görünüm oluşturma
BigQuery kullanıcı arayüzünü kullanarak SQL sorgusuyla tanımlanan sanal bir tablo olan "görünüm" oluşturabilirsiniz. Farklı görünüm türleri ve bunların nasıl oluşturulacağı hakkında ayrıntılı talimatlar için BigQuery dokümanlarına bakın.
Crashlytics akışını BigQuery konumuna aktarma
BigQuery akışı ile Crashlytics verilerinizi gerçek zamanlı olarak yayınlayabilirsiniz. Canlı verilerin gerekli olduğu her amaç için kullanabilirsiniz. Örneğin, bilgileri canlı bir kontrol panelinde sunma, kullanıma sunma sürecini canlı olarak izleme veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izleme gibi.
Crashlytics Akış dışa aktarma BigQuery özelliğini etkinleştirdiğinizde, toplu tabloya ek olarak gerçek zamanlı bir tablonuz da olur. Tablolar arasındaki farklar aşağıda belirtilmiştir:
Toplu iş tablosu | Anlık tablo |
---|---|
|
|
Toplu iş tablosu, uzun vadeli analiz ve zaman içindeki trendleri belirlemek için idealdir. Çünkü etkinlikleri yazmadan önce kalıcı olarak saklarız ve 30 güne kadar tabloya geri doldurulabilirler*. Verileri anlık tablonuza yazdığımızda bunları hemen BigQuery konumuna 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.
Varsayılan olarak, anlık tablo 30 günlük bir bölüm geçerlilik süresine sahiptir. Bunu nasıl değiştireceğinizi öğrenmek için BigQuery dokümanlarındaki Bölümün geçerlilik süresini ayarlama başlıklı makaleyi inceleyin.
* Yedek reklam desteğiyle ilgili ayrıntıları Yeni dışa aktarma altyapısına yükseltme başlıklı makalede bulabilirsiniz.
BigQuery biçimine dışa aktarmayı etkinleştirme
Firebase konsolunda Entegrasyonlar sayfasına gidin.
BigQuery kartında Bağlantı'yı tıklayın.
BigQuery'a dışa aktarmayı etkinleştirmek için ekrandaki talimatları uygulayın.
BigQuery'te Crashlytics verilerinize neredeyse anlık olarak erişmek istiyorsanız akışla dışa aktarma'ya yükseltmeyi düşünebilirsiniz.
Crashlytics akışının BigQuery'e dışa aktarılmasını etkinleştirme
Firebase konsolunda Entegrasyonlar sayfasına gidin.
BigQuery kartında Yönet'i tıklayın.
Yayınları dahil et onay kutusunu işaretleyin.
Bu işlem, bağlı tüm uygulamalarınızda akışı etkinleştirir.
Dışa aktarmayı 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 veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturma). 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'ya 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'ya bağlanır. Daha sonra projeye eklediğiniz tüm uygulamalar da otomatik olarak BigQuery'ya bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.
Firebase, verilerinizin BigQuery ile günlük olarak senkronize edilmesini sağlar.
Projenizi bağladıktan sonra, ilk veri grubunuzun BigQuery'ya aktarılması için genellikle ertesi günkü senkronizasyona kadar beklemeniz gerekir.
Günlük senkronizasyon, BigQuery'da ayarlamış olabileceğiniz planlanmış dışa aktarma işlemlerinden bağımsız olarak günde bir kez gerçekleşir. Senkronizasyon işinin zamanlaması ve süresinin değişebileceğini unutmayın. Bu nedenle, dışa aktarma işleminin belirli bir zamanlamasına göre sonraki işlemlerin veya işlerin planlanmasını önermiyoruz.
Firebase, BigQuery'ye mevcut verilerinizin bir kopyasını dışa aktarır. Dışa aktarma için verilerin ilk yayılması 48 saati bulabilir.
Bu dışa aktarma işlemi, her bağlı uygulama için günlük senkronizasyondan elde edilen verileri içeren bir toplu tablo içerir.
Toplu iş tablosu için BigQuery'e dışa aktarmayı etkinleştirdiğiniz en son tarihe (hangisi daha yakınsa) kadar manuel olarak veri geri doldurma işlemleri planlayabilirsiniz veya son 30 güne kadar.
Ekim 2024'ün ortasından önce Crashlytics verilerinin dışa aktarılmasını etkinleştirdiyseniz dışa aktarmayı etkinleştirdiğiniz günden önceki 30 günü de doldurabileceğinizi unutmayın.
CrashlyticsBigQuery için akış dışa aktarmayı etkinleştirirsenizCrashlytics, bağlı tüm uygulamalarda sürekli güncellenen verileri içeren gerçek zamanlı bir tablo da bulunur.
BigQuery dışa aktarmayı devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.
Örnek sorgular
1. örnek: Günlük kilitlenme sayısı
Mümkün olduğunca çok sayıda hatayı düzeltmek için çalıştıktan sonra ekibinizin nihayet yeni fotoğraf paylaşım uygulamanızı kullanıma sunmaya hazır olduğunu düşünüyorsunuz. Ancak bunu yapmadan önce, hata avı etkinliğinizin uygulamayı zaman içinde daha kararlı hale getirdiğinden emin olmak için son bir ayda günlük kilitlenme sayısını kontrol etmek istiyorsunuz.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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 kilitlenmeleri bulma
Üretim planlarına doğru şekilde öncelik vermek için uygulamanızdaki en yaygın 10 kilitlenmeyi bulmak istiyorsunuz. İlgili veri noktalarını sağlayan bir sorgu oluşturuyorsunuz.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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: En çok kilitlenen 10 cihaz
Sonbahar, yeni telefon sezonu! Şirketiniz, bu durumun özellikle Android'de yeni cihaza özgü sorunların yaşanabileceği bir dönem olduğunu da biliyor. Yaklaşan uyumluluk sorunlarını önlemek için geçen hafta (168 saat) en çok kilitlenen 10 cihazı belirleyen bir sorgu oluşturdunuz.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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ı olması için current_level
adlı bir özel Crashlytics anahtarı ayarlarsınız ve kullanıcı yeni bir seviyeye 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);
Dışa aktarma işleminizde bu anahtarı kullanarak BigQuery, her kilitlenme etkinliğiyle ilişkili current_level
değerlerinin dağılımını bildiren bir sorgu yazabilirsiniz.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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'yi ayıklama
Erken erişim aşamasında olan bir Android uygulamanız var. Kullanıcılarınızın çoğu bu sürümü beğeniyor ancak üç kullanıcı, alışılmadık sayıda kilitlenme sorunu yaşıyor. Sorunun kaynağını 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 sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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, beta test kullanıcılarından oluşan bir gruba yanlışlıkla kritik bir hata içeren sürüm yayınladı. Ekibiniz, yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildi. Şimdi ekibiniz, bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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ı sayısı (ülkeye göre ayrılmış)
Ekibiniz, yeni bir sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildiniz. Ekibiniz, bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını görmek istiyor.
Bu sorguyu yazmak için ekibinizin aşağıdakileri yapması gerekir:
Google Analytics verilerinin BigQuery'ye aktarılmasını 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 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ün şu ana kadar karşılaşılan en büyük 5 sorun
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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, TARİH'ten bu yana en büyük 5 sorun
Güvenilir toplu verilere gerçek zamanlı bilgiler eklemek için toplu ve gerçek zamanlı tabloları birleştirme sorgusuyla da birleştirebilirsiniz. event_id
birincil anahtar olduğundan, iki tablodaki ortak etkinlikleri tekilleştirmek için DISTINCT event_id
kullanabilirsiniz.
Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID
yerine paket kimliğini ve IOS
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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD") GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Dışa aktarılan Crashlytics verilerini Looker Studio ile görselleştirme
Looker Studio BigQuery içindeki Crashlytics veri kümelerinizi okunması ve paylaşılması kolay, tamamen özelleştirilebilen raporlara dönüştürür.
Looker Studio kullanımı hakkında daha fazla bilgi edinmek için karşılama rehberine göz atın.
Crashlytics rapor şablonu kullanma
Looker Studio, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren Crashlytics için örnek bir rapora sahiptir. Crashlytics'e BigQuery akışla dışa aktarmayı etkinleştirdiyseniz bu verileri Looker Studio şablonunun Anlık trendler sayfasında görüntüleyebilirsiniz.Kendi uygulamanızın ham kilitlenme verilerine dayalı olarak 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'i seçerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin.
Toplu işlem tablonuz her zaman seçilebilir. Crashlytics BigQuery 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, Crashlytics Looker Studio gösterge tablosu şablonunun kopyasını oluşturmak için Rapor Oluştur'u tıklayın.
Crashlytics şemasını anlama BigQuery
Firebase Crashlytics verileri, firebase_crashlytics
adlı BigQuery veri kümesine aktarılır. Veri kümesi, birden fazla uygulama içerse bile projenizin tamamını kapsar.
Tablolar
Varsayılan olarak Firebase, Crashlytics veri kümesinde BigQuery'ye bağlı projenizdeki her uygulama için ayrı tablolar oluşturur. Tablolar, uygulamanın tanımlayıcısına göre adlandırılır (noktalar alt çizgiye dönüştürülür) ve uygulamanın platformu (_IOS
veya _ANDROID
) eklenir. Örneğin, paket adı com.google.test
olan bir Android uygulamasına ait veriler com_google_test_ANDROID
adlı bir tabloda yer alır.
Crashlytics akışını BigQuery'e aktarmayı etkinleştirirseniz Crashlytics verileri de _REALTIME
ile eklenmiş bir tabloya (örneğin, com_google_test_ANDROID_REALTIME
) anlık olarak aktarılır.
Tablodaki her satır, uygulamada meydana gelen bir etkinliği (kilitlenmeler, onarılabilir hatalar ve ANR'ler dahil) temsil eder.
Tablolar, uygulamanızda tanımladığınız özel Crashlytics anahtarların yanı sıra 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
Bir tablodaki sütunlar kilitlenmeler, onarılabilir hatalar ve ANR'ler için aynıdır. Crashlytics BigQuery konumuna akış dışa aktarma etkinleştirildiyse anlık tablo, toplu tabloyla aynı sütunlara sahip olur. Satırlarda, yığın izleri olmayan etkinlikleri temsil eden sütunlar olabileceğini unutmayın.
Dışa aktarılan Crashlytics verileri için tablodaki sütunlar şunlardır:
Alan adı | Veri türü | Açıklama |
---|---|---|
app_orientation |
DİZE | Örneğin, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN vb. |
application |
KAYIT | Etkinliği oluşturan uygulama |
application.build_version |
DİZE | Uygulamanın derleme sürümü |
application.display_version |
DİZE | |
blame_frame |
KAYIT | Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve |
blame_frame.address |
INT64 | Kodu içeren ikili görüntüdeki adres Java çerçeveleri için ayarlanmamış |
blame_frame.blamed |
BOOLE | Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi? |
blame_frame.file |
DİZE | Çerçeve dosyasının adı |
blame_frame.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
blame_frame.line |
INT64 | Çerçevenin dosyasının satır numarası |
blame_frame.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt uzaklığı Java istisnaları için ayarlanmamış |
blame_frame.owner |
DİZE | Örneğin, DEVELOPER , VENDOR , RUNTIME , PLATFORM veya SYSTEM |
blame_frame.symbol |
DİZE | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
breadcrumbs |
REPEATED RECORD | Etkinleştirilmişse zaman damgalı Google Analytics içerik haritaları |
breadcrumbs.name |
DİZE | İçerik haritasıyla ilişkili ad |
breadcrumbs.params |
REPEATED RECORD | Ekmek kırıntısıyla ilişkili parametreler |
breadcrumbs.params.key |
DİZE | Ekmek kırıntısıyla ilişkili bir parametre anahtarı |
breadcrumbs.params.value |
DİZE | Ekmek kırıntısıyla ilişkili bir parametre değeri |
breadcrumbs.timestamp |
ZAMAN DAMGASI | İçerik haritasıyla ilişkili zaman damgası |
bundle_identifier |
DİZE | Uygulamanın Firebase projesine kaydedilirken kullanılan benzersiz tanımlayıcısı
(örneğin, com.google.gmail Apple platformu uygulamaları için bu, uygulamanın paket kimliğidir. Android uygulamaları için bu, uygulamanın paket adıdır. |
crashlytics_sdk_versions |
DİZE | Etkinliği oluşturan Crashlytics SDK sürümü |
custom_keys |
REPEATED RECORD | 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 |
device |
KAYIT | Etkinliğin gerçekleştiği cihaz |
device_orientation |
DİZE | Örneğin, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN vb. |
device.architecture |
DİZE | Örneğin, X86_32 , X86_64 , ARMV7 , ARM64 , ARMV7S veya ARMV7K |
device.manufacturer |
DİZE | Cihaz üreticisi |
device.model |
DİZE | Cihaz modeli |
error |
REPEATED RECORD | (Yalnızca Apple uygulamaları) Önemli olmayan hatalar |
error_type |
DİZE | Etkinliğin hata türü (ör. FATAL , NON_FATAL , ANR vb.) |
error.blamed |
BOOLE | Crashlytics bu karenin hataya neden olduğunu belirledi mi? |
error.code |
INT64 | Uygulamanın özel olarak kaydedilen NSError'ı ile ilişkili hata kodu |
error.frames |
REPEATED RECORD | Yığın izlemesinin çerçeveleri |
error.frames.address |
INT64 | Kodu içeren ikili resimdeki adres |
error.frames.blamed |
BOOLE | Crashlytics bu karenin hataya neden olduğunu belirledi mi? |
error.frames.file |
DİZE | Çerçeve dosyasının adı |
error.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
error.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
error.frames.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt uzaklığı |
error.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR , RUNTIME , PLATFORM veya SYSTEM |
error.frames.symbol |
DİZE | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
error.queue_name |
DİZE | İş parçacığının üzerinde çalıştığı sıra |
error.subtitle |
DİZE | İleti dizisinin alt başlığı |
error.title |
DİZE | İleti dizisinin başlığı |
event_id |
DİZE | Etkinliğin benzersiz kimliği |
event_timestamp |
ZAMAN DAMGASI | Etkinliğin gerçekleştiği zaman |
exceptions |
REPEATED RECORD | (Yalnızca Android) Bu etkinlik sırasında oluşan istisnalar. İç içe yerleştirilmiş istisnalar, ters kronolojik sırayla sunulur. Bu nedenle, son kayıt, oluşturulan ilk istisnadır. |
exceptions.blamed |
BOOLE | Crashlytics, istisnanın hataya veya kilitlenmeye neden olduğunu belirlerse doğru |
exceptions.exception_message |
DİZE | İstisnayla ilişkili bir mesaj |
exceptions.frames |
REPEATED RECORD | İstisnayla ilişkili kareler |
exceptions.frames.address |
INT64 | Kodu içeren ikili görüntüdeki adres Java çerçeveleri için ayarlanmamış |
exceptions.frames.blamed |
BOOLE | Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi? |
exceptions.frames.file |
DİZE | Çerçeve dosyasının adı |
exceptions.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
exceptions.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
exceptions.frames.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt uzaklığı Java istisnaları için ayarlanmamış |
exceptions.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR , RUNTIME , PLATFORM veya SYSTEM |
exceptions.frames.symbol |
DİZE | Hidratlanmış sembol veya hidratlanamıyorsa ham sembol |
exceptions.nested |
BOOLE | Son atılan istisna (yani ilk kayıt) hariç tümü için doğrudur. |
exceptions.subtitle |
DİZE | İleti dizisinin alt başlığı |
exceptions.title |
DİZE | İleti dizisinin başlığı |
exceptions.type |
DİZE | İstisna türü
(örneğin, java.lang.IllegalStateException) |
installation_uuid |
DİZE | Benzersiz bir uygulama ve cihaz yüklemesini tanımlayan kimlik |
is_fatal |
BOOLE | Uygulamanın kilitlenip kilitlenmediği |
issue_id |
DİZE | Etkinlikle ilişkili sorun |
logs |
REPEATED RECORD | Etkinleştirilmişse Crashlytics günlükçüsü tarafından oluşturulan zaman damgalı günlük mesajları |
logs.message |
DİZE | Günlüğe kaydedilen mesaj |
logs.timestamp |
ZAMAN DAMGASI | Günlüğün oluşturulduğu zaman |
memory |
KAYIT | Cihazın bellek durumu |
memory.free |
INT64 | Kalan bellek baytı |
memory.used |
INT64 | Kullanılan bellek baytları |
operating_system |
KAYIT | Cihazdaki işletim sisteminin ayrıntıları |
operating_system.device_type |
DİZE | Cihaz türü (örneğin, MOBILE , TABLET , TV vb.); "cihaz kategorisi" olarak da bilinir. |
operating_system.display_version |
DİZE | Cihazdaki işletim sisteminin sürümü |
operating_system.modification_state |
DİZE | Cihazın değiştirilip değiştirilmediği
(ör. jailbreak'li bir uygulama MODIFIED , rootlanmış bir uygulama ise UNMODIFIED ) |
operating_system.name |
DİZE | Cihazdaki işletim sisteminin adı |
operating_system.type |
DİZE | (Yalnızca Apple uygulamaları) Cihazda çalışan işletim sisteminin türü (ör.
IOS , MACOS vb.) |
platform |
DİZE | Uygulamanın Firebase projesine kayıtlı olduğu platform
(geçerli değerler: IOS veya ANDROID )
|
process_state |
DİZE | BACKGROUND veya FOREGROUND |
storage |
KAYIT | Cihazın kalıcı depolama alanı |
storage.free |
INT64 | Kalan depolama alanı (bayt) |
storage.used |
INT64 | Kullanılan depolama alanı bayt cinsinden |
threads |
REPEATED RECORD | Etkinlik sırasında mevcut olan ileti dizileri |
threads.blamed |
BOOLE | Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi? |
threads.code |
INT64 | (Yalnızca Apple uygulamaları) Uygulamanın özel olarak kaydedilmiş NSError'ının hata kodu |
threads.crash_address |
INT64 | Uygulamanın çökmesine neden olan sinyalin adresi; yalnızca çöken yerel iş parçacıklarında bulunur. |
threads.crashed |
BOOLE | İş parçacığının kilitlenip kilitlenmediği |
threads.frames |
REPEATED RECORD | İpliğin çerçeveleri |
threads.frames.address |
INT64 | Kodu içeren ikili resimdeki adres |
threads.frames.blamed |
BOOLE | Crashlytics bu karenin hataya neden olduğunu belirledi mi? |
threads.frames.file |
DİZE | Çerçeve dosyasının adı |
threads.frames.library |
DİZE | Çerçeveyi içeren kitaplığın görünen adı |
threads.frames.line |
INT64 | Çerçevenin dosyasının satır numarası |
threads.frames.offset |
INT64 | Kodu içeren ikili görüntüdeki bayt uzaklığı |
threads.frames.owner |
DİZE | Örneğin, DEVELOPER , VENDOR , RUNTIME , PLATFORM veya SYSTEM |
threads.frames.symbol |
DİZE | Hidratlanmış simge veya hidratlanamıyorsa ham simge |
threads.queue_name |
DİZE | (Yalnızca Apple uygulamaları) İş parçacığının üzerinde çalıştığı sıra |
threads.signal_code |
DİZE | Uygulamanın kilitlenmesine neden olan sinyalin kodu; yalnızca kilitlenen yerel iş parçacıklarında bulunur. |
threads.signal_name |
DİZE | Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca kilitlenen yerel iş parçacıklarında bulunur. |
threads.subtitle |
DİZE | İleti dizisinin alt başlığı |
threads.thread_name |
DİZE | İleti dizisinin adı |
threads.title |
DİZE | İleti dizisinin başlığı |
unity_metadata.debug_build |
BOOLE | Bu bir hata ayıklama derlemesi ise |
unity_metadata.graphics_copy_texture_support |
DİZE | Unity API'de tanımlandığı şekilde grafik dokusunu kopyalama desteği |
unity_metadata.graphics_device_id |
INT64 | Grafik cihazının tanımlayıcısı |
unity_metadata.graphics_device_name |
DİZE | Grafik cihazının adı |
unity_metadata.graphics_device_type |
DİZE | Grafik cihazının türü |
unity_metadata.graphics_device_vendor_id |
INT64 | Grafik işlemcinin tedarikçisinin tanımlayıcısı |
unity_metadata.graphics_device_vendor |
DİZE | Grafik cihazının satıcısı |
unity_metadata.graphics_device_version |
DİZE | Grafik cihazın sürümü |
unity_metadata.graphics_max_texture_size |
INT64 | Doku oluşturmaya ayrılan maksimum boyut |
unity_metadata.graphics_memory_size_mb |
INT64 | MB cinsinden grafik belleği |
unity_metadata.graphics_render_target_count |
INT64 | Grafik oluşturma hedeflerinin sayısı |
unity_metadata.graphics_shader_level |
INT64 | Grafiklerin gölgelendirici düzeyi |
unity_metadata.processor_count |
INT64 | İşlemci (çekirdek) sayısı |
unity_metadata.processor_frequency_mhz |
INT64 | İşlemcilerin frekansı(MHz) |
unity_metadata.processor_type |
DİZE | İşlemcinin türü |
unity_metadata.screen_refresh_rate_hz |
INT64 | Ekranın Hz cinsinden yenileme hızı |
unity_metadata.screen_resolution_dpi |
DİZE | Ekranın DPI'si (kayan nokta sayısı olarak) |
unity_metadata.screen_size_px |
DİZE | Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilmiş) |
unity_metadata.system_memory_size_mb |
INT64 | Sistemin belleğinin boyutu (Mb cinsinden) |
unity_metadata.unity_version |
DİZE | Bu cihazda çalışan Unity sürümü |
user |
KAYIT | (İsteğe bağlı) Uygulama kullanıcısı hakkında toplanan bilgiler |
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 |
user.name |
DİZE | (İsteğe bağlı) Kullanıcının adı |
variant_id |
DİZE | Bu etkinlikle ilişkili sorun varyantı Tüm etkinliklerin ilişkili bir sorun varyantı olmadığını unutmayın. |
Yeni dışa aktarma altyapısına yükseltme
Crashlytics, Ekim 2024'ün ortalarında Crashlytics verilerinin BigQuery'e toplu dışa aktarımı için yeni bir altyapı başlattı.
Tüm Firebase projeleri, 15 Eylül 2025'ten itibaren yeni toplu dışa aktarma altyapısına otomatik olarak yükseltilecek. Bu tarihten önce yükseltme yapabilirsiniz ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.
Yeni altyapıya geçebilirsiniz ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.
Yeni altyapıda olup olmadığınızı belirleme
Toplu dışa aktarma özelliğini Ekim 2024'ün ortasında veya daha sonra etkinleştirdiyseniz Firebase projeniz yeni dışa aktarma altyapısını otomatik olarak kullanır.
Projenizin hangi altyapıyı kullandığını kontrol edebilirsiniz:
Google Cloud konsoluna gidin. "Veri aktarımı yapılandırmanız" Firebase Crashlytics with Multi-Region Support
olarak etiketlenmişse projeniz yeni dışa aktarma altyapısını kullanıyordur.
Eski dışa aktarma altyapısı ile yeni dışa aktarma altyapısı arasındaki önemli farklar
Yeni altyapı, Crashlytics veri kümesi konumlarını destekler.
Ekim 2024'ün ortalarından önce dışa aktarma etkinleştirildi ve yeni dışa aktarma altyapısına yükseltildi: Artık isteğe bağlı olarak veri dışa aktarma konumunu değiştirebilirsiniz.
Dışa aktarma, Ekim 2024'ün ortasında veya daha sonra etkinleştirildi: Kurulum sırasında veri dışa aktarma için bir konum seçmeniz istendi.
Yeni altyapı, dışa aktarmayı etkinleştirmeden önceki verilerin geri doldurulmasını desteklemez.
Eski altyapı, dışa aktarmayı etkinleştirdiğiniz tarihten önceki 30 güne kadar geri doldurmayı destekliyordu.
Yeni altyapı, son 30 güne kadar geri doldurma işlemlerini veya dışa aktarma özelliğini etkinleştirdiğiniz en son tarihi (hangisi daha yakınsa) destekler.BigQuery
Yeni altyapı, Firebase projenizdeki Firebase uygulamalarınız için ayarlanan tanımlayıcıları kullanarak BigQuery toplu tablolar oluşturur.
Eski altyapı, verileri uygulamanızın ikilisindeki paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazıyordu.
Yeni altyapı, verileri Firebase projenizde kayıtlı Firebase uygulamalarınız için ayarlanan paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazar.
1. adım: Yükseltme için ön koşul
Mevcut BigQuery toplu işlem tablolarınızın, Firebase projenizde kayıtlı Firebase uygulamalarınız için ayarlanan paket kimlikleri veya paket adlarıyla eşleşen tanımlayıcılar kullandığını kontrol edin. Eşleşmezlerse dışa aktarılan toplu verilerinizde kesintiler yaşayabilirsiniz. Çoğu proje uygun ve uyumlu durumda olur ancak yükseltme yapmadan önce kontrol etmeniz önemlidir.
Firebase projenize kaydedilen tüm Firebase uygulamalarını Firebase konsolunda bulabilirsiniz: Proje ayarları'na gidin, ardından tüm Firebase uygulamalarınızı ve bilgilerini görmek için Uygulamalarınız kartına gidin.
Tüm BigQuery toplu tablolarınızı Google Cloud konsolunun BigQuery sayfasında bulabilirsiniz.
Örneğin, yükseltme sırasında sorun yaşamayacağınız ideal durumlar şunlardır:
com_yourcompany_yourproject_IOS
adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmişcom.yourcompany.yourproject
paket kimliğine sahip bir Firebase iOS+ uygulamanız var.com_yourcompany_yourproject_ANDROID
adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmişcom.yourcompany.yourproject
paket adına sahip bir Firebase Android uygulamanız var.
Kayıtlı Firebase uygulamalarınız için ayarlanan tanımlayıcılarla eşleşmeyen toplu tablo adlarınız varsa toplu dışa aktarma işleminizin kesintiye uğramaması için bu sayfadaki talimatları uygulayın. Bu talimatları manuel olarak yükseltmeden önce veya 15 Eylül 2025'ten önce uygulamanız gerekir.
2. adım: Yeni altyapıya manuel olarak yükseltme
Toplu dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz Crashlytics veri dışa aktarma özelliğini Firebase konsolunda kapatıp tekrar açarak yeni altyapıya manuel olarak yükseltebilirsiniz.
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ı 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 verilerinizin BigQuery'e aktarılması artık yeni dışa aktarma altyapısı kullanılarak yapılıyor.