Bu sayfada, sorun gidermeyle ilgili yardım ve sık sorulan soruların yanıtlarını bulabilirsiniz.
Crashlytics kullanımıyla ilgili sorularınız var. Şu durumda:
Aradığınızı bulamıyorum veya daha fazla yardıma ihtiyacınız var,
Firebase desteği.
Genel sorun giderme/SSS
Sorunlar tablosunda bazı sorunlar için farklı biçimler (ve bazen "varyantlar") görme
Firebase konsolundaki Sorunlar tablonuzda listelenen sorunlar için iki farklı biçim görebilirsiniz. Ayrıca bazı sorunlarınızda "varyantlar" adlı bir özellik de görebilirsiniz. Bunun nedeni:
2023'ün başlarında, etkinlikleri farklı gruplar şeklinde gruplandırmak için iyileştirilmiş bir analiz motorunu kullanıma sunduk.
ayrıca yeni sorunlar için güncellenmiş bir tasarım ve bazı gelişmiş özelliklerin (ör.
ekleyin!). Tüm ayrıntılar için son blog yayınımıza göz atın. Önemli noktaları aşağıda bulabilirsiniz.
Crashlytics, uygulamanızdaki tüm etkinlikleri (kilitlenmeler, önemli olmayanlar ve
ve ANR'ler) çalışır ve sorunlar adı verilen etkinlik grupları oluşturur. Tüm etkinlikler
ortak bir hata noktası bulunuyor.
İyileştirilmiş analiz motoru, etkinlikleri bu sorunlara göre gruplandırmak için artık yığın izlemedeki çerçeveler, istisna mesajı, hata kodu ve diğer platform veya hata türü özellikleri de dahil olmak üzere etkinliğin birçok yönünü inceliyor.
Ancak bu etkinlik grubu içinde, başarısızlığa yol açan yığın izlemeler
farklı olabilir. Farklı bir yığın izleme, farklı bir kök nedene işaret edebilir.
Bir sorun içindeki bu olası farkı temsil etmek için,
Sorunlar içindeki varyantlar: Her varyant, bir sorundaki etkinliklerin bir alt grubudur
aynı hata noktasına sahip ve benzer bir yığın izlemeye sahip olan yayıncılar. Varyantlarla,
bir sorundaki en yaygın yığın izlemelerde (stack trace) hata ayıklayabilir
farklı kök nedenler hataya yol açabilir.
Bu iyileştirmeler sayesinde şunları deneyimleyebilirsiniz:
Sorun satırında gösterilen yenilenmiş meta veriler Uygulamanızdaki sorunları anlamak ve önceliklerini belirlemek artık daha kolay.
Daha az yinelenen sorun Satır numarası değişikliği yeni bir sorunla sonuçlanmaz.
Çeşitli temel nedenlerle ilgili karmaşık sorunlarda daha kolay hata ayıklama Bir sorundaki en yaygın yığın izlemelerde (stack trace) hata ayıklamak için varyantları kullanın.
Daha anlamlı uyarılar ve sinyaller Yeni sorun aslında yeni bir hatayı temsil ediyor.
Daha güçlü arama Her sorun, istisna türü ve paket adı gibi daha fazla aranabilir meta veri içerir.
Bu iyileştirmeler şu şekilde kullanıma sunulacaktır:
Uygulamanızdan yeni etkinlikler aldığımızda, bunların mevcut bir uygulamayla eşleşip eşleşmediğini kontrol ederiz
.
Eşleşme yoksa daha akıllı etkinlik gruplandırma algoritmamızı etkinliğe otomatik olarak uygular ve yenilenen meta veri tasarımıyla yeni bir sorun oluştururuz.
Bu, etkinlik grubumuzda yaptığımız ilk büyük güncellemedir. Geri bildiriminiz veya karşılaştığınız bir sorun varsa lütfen bir bildirim göndererek bize bildirin.
Kilitlenme sorunu ile karşılaşmayan kullanıcı sayısı metriklerini ve/veya hız uyarılarını görememe
Kilitlenme sorunu yaşamayan kullanıcılar ve oturum sayısı gibi metrikleri görmüyorsanız
ve/veya hız uyarılarını kullandığınızdan emin olun:
Crashlytics SDK 11.7.0 ve sonraki sürümleri.
İçerik haritası günlüklerini görememe
Breadcrumb günlüklerini görmüyorsanız uygulamanızın Google Analytics yapılandırmasını kontrol etmenizi öneririz.
Aşağıdaki koşulları karşıladığınızdan emin olun:
Crashlytics Unity'nin v8.6.1 veya sonraki bir sürümünü kullandığınızdan emin olun
SDK'dır.
Simge dosyanızı oluşturup yüklemek için Firebase CLIcrashlytics:symbols:upload komutunu çalıştırmaya hazır olduğunuzdan emin olun.
Her yayın derlemesi veya Firebase konsolunda sembolize edilmiş yığın izlemelerini görmek istediğiniz herhangi bir derleme oluşturduğunuzda bu CLI komutunu çalıştırmanız gerekir. Daha fazla bilgi:
Okunabilir kilitlenme raporları alma
sayfasını ziyaret edin.
Crashlytics kullanılabilir
nasıl kullanıyor?
Evet, Crashlytics, IL2CPP kullanan uygulamalarınız için sembolize edilmiş yığın izlemeleri gösterebilir. Bu özellik, Android veya Apple platformlarında yayınlanan uygulamalarda kullanılabilir. Yapmanız gerekenler:
Crashlytics Unity SDK'sının 8.6.0 veya sonraki bir sürümünü kullandığınızdan emin olun.
Platformunuz için gerekli görevleri tamamlayın:
Apple platform uygulamaları için: Herhangi bir özel işlem yapmanız gerekmez. Apple için
Firebase Unity Editor eklentisi tarafından otomatik olarak yapılandırılır,
Xcode projenizde oluşturmanız gerekir.
Android uygulamaları için: Simge dosyanızı oluşturmak ve yüklemek üzere Firebase CLI crashlytics:symbols:upload komutunu çalıştırmaya hazır olduğunuzdan emin olun.
Her sürüm oluşturduğunuzda bu CLI komutunu çalıştırmanız gerekir
üzerinde simgeselleştirilmiş yığın izlemeleri görmek istediğiniz bir derleme veya
Firebase konsolunda gösterilir. Daha fazla bilgi için Okunabilir kilitlenme raporları alma sayfasını inceleyin.
Kilitlenme sorunu yaşamayan kullanıcı sayısı nasıl hesaplanır?
Kilitlenme sorunu yaşamayan kullanıcıların yüzdesi, uygulamanızla etkileşime geçen ancak belirli bir dönemde kilitlenme yaşamayan kullanıcıların yüzdesini gösterir.
Kilitlenme sorunu yaşamayan kullanıcı yüzdesini hesaplama formülü aşağıdaki gibidir. Giriş
değerler Google Analytics tarafından sağlanır.
CRASH_FREE_USERS_PERCENTAGE = 1 - (CRASHED_USERS / ALL_USERS) x 100
Bir kilitlenme olduğunda Google Analytics, app_exception etkinliği gönderir
type (tür), CRASHED_USERS ise ilişkilendirilen kullanıcı sayısını temsil eder
izin verebileceğinizi unutmayın.
ALL_USERS,
açılır menüden seçtiğiniz dönem boyunca uygulamanıza
Crashlytics kontrol panelinin sağ üst tarafında.
Kilitlenme sorunu yaşamayan kullanıcı yüzdesi ortalama değil, zaman içindeki toplam değerdir.
Örneğin, uygulamanızda üç kullanıcı olduğunu varsayalım. Bu kullanıcıları A, B ve C olarak adlandıralım. Aşağıdaki tabloda her gün hangi kullanıcıların uygulamanızla etkileşimde bulunduğu gösterilmektedir
ve bu kullanıcılardan hangilerinin o gün kilitlenme yaşadığını belirtir:
Pazartesi
Salı
Çarşamba
Uygulamanızla etkileşime geçen kullanıcılar
A, B, C
A, B, C
A, B
Kilitlenme yaşayan kullanıcı
C
B
A
Çarşamba günü, kilitlenme sorunu yaşamayan kullanıcı yüzdeniz %50 (2 kullanıcıdan 1'i
kilitlenmesini önlüyor). Çarşamba günü kullanıcılarınızdan ikisi uygulamanızla etkileşime geçti, ancak bunlardan yalnızca biri (B kullanıcısı) kilitlenme yaşamadı.
Son 2 gün içinde kilitlenme sorunu yaşamayan kullanıcıların yüzdesi %33,3'tür (3 kullanıcıdan 1'i kilitlenme sorunu yaşamamıştır). Kullanıcılarınızdan üçü son iki gün içinde uygulamanızla etkileşimde bulunmuş, ancak
bunlardan birinde (C Kullanıcısı) hiç kilitlenme gerçekleşmedi.
Son 3 gün içinde kilitlenme sorunu yaşamayan kullanıcı yüzdeniz %0'dır (3 kullanıcıdan 0'ı kilitlenme sorunu yaşamamıştır). Kullanıcılarınızdan üçü son üç günde uygulamanızla etkileşimde bulunmuş, ancak
hiçbirinde kilitlenme yaşanmamıştır.
Kilitlenme sorunu yaşamayan kullanıcı sayısı değeri, farklı dönemlerle karşılaştırılmamalıdır.
Tek bir kullanıcının uygulamanızı ne kadar çok kullandığına bağlı olarak kilitlenme yaşama olasılığı artar. Bu nedenle, kilitlenme yaşamayan kullanıcı sayısı değeri uzun süreler için daha düşük olabilir.
Bir sorunla ilgili notları kimler görüntüleyebilir, yazabilir ve silebilir?
Notlar, proje üyelerinin sorular ve durumlarla ilgili belirli sorunlar hakkında yorum yapmasına olanak tanır.
güncellemeler vb.
Bir proje üyesi not yayınladığında bu not, ilgili kullanıcının Google gönderdiği e-posta ile etiketlenir.
hesap. Bu e-posta adresi, notla birlikte tüm projeler tarafından görülebilir
notu görüntüleme erişimine sahip üyeler tarafından görüntülenebilir.
Aşağıda, notları görüntülemek, yazmak ve silmek için gereken erişim açıklanmaktadır:
Aşağıdaki rollerden herhangi birine sahip proje üyeleri, mevcut notları görüntüleyip silebilir ve bir sorunla ilgili yeni notlar yazabilir.
Aşağıdaki rollerden herhangi birine sahip proje üyeleri, bir sorunla ilgili olarak yayınlanan notları görüntüleyebilir ancak notları silebilir veya not yazamaz.
Bir sorunla ilgili notları kimler görüntüleyebilir, yazabilir ve silebilir?
Notlar, proje üyelerinin sorular ve durumlarla ilgili belirli sorunlar hakkında yorum yapmasına olanak tanır.
güncellemeler vb.
Bir proje üyesi not yayınladığında bu not, ilgili kullanıcının Google gönderdiği e-posta ile etiketlenir.
hesap. Bu e-posta adresi, notla birlikte tüm projeler tarafından görülebilir
notu görüntüleme erişimine sahip üyeler tarafından görüntülenebilir.
Aşağıda, notları görüntülemek, yazmak ve silmek için gereken erişim açıklanmaktadır:
Aşağıdaki rollerden herhangi birine sahip proje üyeleri, mevcut notları görüntüleyip silebilir ve bir sorunla ilgili yeni notlar yazabilir.
Uygulama ayrıca
Google Mobile Ads SDK, ancak kilitlenme almıyor
Projenizde Google Mobile Ads SDK'sı ile birlikte Crashlytics kullanılıyorsa
kilitlenmeyi bildirenler de muhtemelen bu işlem sırasında
istisna işleyicileri kaydetmem gerekiyor. Sorunu düzeltmek için kilitlenme raporlamasını devre dışı bırakın:
disableSDKCrashReporting çağırarak Mobile Ads SDK'sını kullanın.
BigQuery veri kümem nerede bulunuyor?
Crashlytics'yi BigQuery'ye bağladıktan sonra, oluşturduğunuz yeni veri kümeleri Firebase projenizin konumundan bağımsız olarak otomatik olarak ABD'de konumlandırılır.
Geri çekilen sorunlar
Geri çekilen nedir
sorun?
Sorunu daha önce kapattığınız ancak bir
Crashlytics, sorunun yeniden oluştuğunu belirten yeni bir rapor alır.
Crashlytics, geri çekilen bu sorunları otomatik olarak yeniden açar. Böylece şunları yapabilirsiniz:
bunları uygulamanıza uygun şekilde ele alın.
Crashlytics'ün bir sorunu nasıl gerileme olarak sınıflandırdığını açıklayan örnek bir senaryo aşağıda verilmiştir:
Crashlytics, ilk kez Kilitlenme ile ilgili kilitlenme raporu alıyor.
"A". Crashlytics, söz konusu kilitlenmeyle ilgili sorunu açar ("A" sorunu).
Bu hatayı hızlı bir şekilde düzeltir, "A" sorununu kapatır ve ardından uygulamanızın yeni bir sürümünü yayınlarsınız.
Crashlytics, sorunu kapattıktan sonra "A" sorunuyla ilgili başka bir rapor alır.
Rapor, Crashlytics adlı kullanıcının bildiği bir uygulama sürümünden geliyorsa
sorunu kapattığınızda (sürümün kilitlenme gönderdiğini gösterir)
herhangi bir kilitlenme için raporlayamazsa Crashlytics,
bu sorunu regresyon olarak gösterir. Sorun kapatılır.
Rapor, sorunu kapattığınızda Crashlytics'in bilmediği bir uygulama sürümünden geliyorsa (yani sürüm, hiçbir kilitlenme için hiçbir kilitlenme raporu göndermediyse) Crashlytics, sorunun geri geldiğini düşünür ve sorunu yeniden açar.
Bir sorun gerilediğinde, bir regresyon algılama uyarısı gönderir ve bir
Crashlytics için en az bir regresyon sinyali olup
, sorunu yeniden açtı. Bir sorunun, gerileme algoritmamız nedeniyle yeniden açılmasını istemiyorsanız sorunu kapatmak yerine "sessize alın".
Eski uygulama sürümlerinde neden gerileme sorunları görüyorum?
Bir rapor, sorunu kapattığınızda hiç kilitlenme raporu göndermemiş eski bir uygulama sürümünden geliyorsa Crashlytics sorunun geri geldiğini düşünür ve sorunu yeniden açar.
Bu durum şu durumda ortaya çıkabilir: Bir hatayı giderdiniz ve
uygulamanızın yeni bir sürümünü yayınladı, ancak kullanıcılarınız hâlâ eski sürümlerini kullanıyor
en iyi uygulamaları paylaşacağız. Bu eski sürümlerden biri, sorunu kapattığınızda hiç kilitlenme raporu göndermediyse ve bu kullanıcılar hatayla karşılaşmaya başlarsa bu kilitlenme raporları, geriye giden bir sorunu tetikler.
Regresyon algoritmamız nedeniyle bir sorunun yeniden açılmasını istemiyorsanız "sesi kapat"
anlamaya çalışın.
Yakalanmayan istisnaları kritik olarak bildirme
Crashlytics, yakalanmayan istisnaları kritik olarak bildirebilir (Unity SDK'sının v10.4.0 sürümünden itibaren). Aşağıdaki SSS'ler gerekçeyi ve en iyi çözümü açıklamaya yardımcı olur
daha iyi anlarsınız.
Bir uygulama neden önemli istisnaları yakalanmamış olarak bildirmelidir?
Yakalanmayan istisnaları önemli olarak bildirerek daha gerçekçi göstergeler elde edersiniz
oyunun oynanmamasına neden olabilecek istisnaları,
çalışmaya devam eder.
Önemli hataları bildirmeye başladığınızda kilitlenme sorunu yaşamayan kullanıcı (CFU) yüzdenizin
muhtemelen azalacaktır, ancak CFU metriği bu değişimi daha iyi
son kullanıcıların en iyi uygulamaları paylaşacağız.
Hangi istisnalar önemli olarak raporlanır?
Crashlytics'ün yakalanmayan bir istisnayı ölümcül olarak bildirmesi için aşağıdaki iki koşulun da karşılanması gerekir:
Uygulamanız (veya dahil edilen bir kitaplığınız) yakalanmayan bir istisna atıyor. Oluşturulan ancak atılmayan bir istisna, yakalanmamış olarak kabul edilmez.
Yakalanmadıkları halde önemli olarak raporlanan istisnaları etkinleştirdikten sonra birçok yeni önemli hata aldım. Bu istisnaları uygun bir şekilde nasıl ele alabilirim?
Yakalanmamış istisnalarınızı önemli olarak raporlamaya başladığınızda
yakalanmamış bu istisnaları işlemeye yönelik bazı seçenekler:
İstisnalar, beklenmedik veya istisnai durumları yansıtmak için oluşturulur ve atılır.
Atılan bir istisnayla yansıtılan sorunları çözmek, programı bilinen bir duruma döndürmeyi (istisna işleme olarak bilinen bir işlem) içerir.
Program bilinen bir duruma döndürülemezse öngörülen tüm istisnaları yakalayıp işlemek en iyi uygulamadır.
Hangi istisna türlerinin hangi kod tarafından yakalanıp işleneceğini kontrol etmek için
try-catch blokunda istisna oluşturabilecek kodu sarmala.
Belirli istisnaları uygun şekilde ele almak için catch ifadelerindeki koşulların mümkün olduğunca dar olduğundan emin olun.
Unity veya Crashlytics'da istisnaları günlüğe kaydetme
Unity veya Crashlytics sürümünde istisnaları kaydetmenin birden çok yolu vardır ve
hatasını ayıklayın.
Crashlytics kullanırken en yaygın ve önerilen iki tanesi şunlardır:
seçenekler:
1. seçenek: Geliştirme veya sorun giderme sırasında Unity konsolunda yazdırın ancak Crashlytics'e bildirmeyin
Debug.Log(exception), Debug.LogWarning(exception) ve Debug.LogError(exception) kullanarak Unity konsoluna yazdırın. Bu işlevler, istisnanın içeriğini Unity konsoluna yazdırır ve istisnayı yeniden atmaz.
2. Seçenek: Crashlytics
Aşağıdaki durumlar için Crashlytics kontrol paneli:
Sonraki olası bir hata ayıklama işlemi için günlüğe bir istisna yapılması gerekiyorsa
Crashlytics etkinliğini kullanın, ardından Crashlytics.Log(exception.ToString()) kullanın.
Ancak bir istisnanın yine de Crashlytics şirketine bildirilmesi gerekiyorsa
yakalanıp kullanılmadığını, ardından şunu kullanın: Crashlytics.LogException(exception)
günlüğe kaydeder.
Bununla birlikte, önemli bir olayı Unity Cloud'a manuel olarak bildirmek istiyorsanız
Teşhis için Debug.LogException kullanabilirsiniz. Bu seçenek, istisnayı yazdırır
Unity konsoluna dahil ediyor; ancak bu da istisnayı da devreye sokuyor
(henüz atılıp yakalanmamasından bağımsız olarak). Hata yerel olmayan bir yerde atılır. Bu, çevresindeki bir Debug.LogException(exception) bile
ile try-catch engellemesi yakalanmamış bir istisnaya neden olmaya devam ediyor.
Bu nedenle, yalnızca aşağıdakilerin tümünü yapmak istiyorsanız Debug.LogException işlevini çağırın:
İstisnayı Unity konsoluna yazdırmak için.
İstisnayı Crashlytics ürününe önemli etkinlik olarak yüklemek için.
İstisnadan kaçınmak için istisnanın yakalanmamış bir istisna olarak değerlendirilmesini sağlayın ve
Unity Cloud Diagnostics'e bildirilmesini sağlayın.
Yakalanan bir istisnayı Unity konsoluna yazdırmak isterseniz veCrashlytics ürününe önemli olmayan bir etkinlik olarak yüklemek istiyorsanız aşağıdaki işlemi gerçekleştirin:
try
{
methodThatThrowsMyCustomExceptionType();
}
catch(MyCustomExceptionType exception)
{
// Print the exception to the Unity console at the error level.
Debug.LogError(exception);
// Upload the exception to Crashlytics as a non-fatal event.
Crashlytics.LogException(exception); // not Debug.LogException
//
// Code that handles the exception
//
}