Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu sayfada Crashlytics'i kullanmayla ilgili sık sorulan soruların yanıtları ve sorun giderme yardımı yer almaktadır. Aradığınızı bulamıyorsanız veya daha fazla yardıma ihtiyacınız varsa Firebase destek ekibiyle iletişime geçin.
Genel sorun giderme/SSS
Sorunlar tablosundaki 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, sorunlarınızın bazılarında
"varyantlar" adlı bir özellik de görebilirsiniz. Bunun nedenleri aşağıda açıklanmıştır!
2023'ün başlarında, etkinlikleri gruplandırmak için iyileştirilmiş bir analiz motorunun yanı sıra yeni sorunlar (varyantlar gibi) için güncellenmiş bir tasarım ve bazı gelişmiş özellikler kullanıma sunduk. Tüm ayrıntılar için en son blog yayınımıza göz atın, ancak öne çıkan konuları aşağıda okuyabilirsiniz.
Crashlytics, uygulamanızdaki tüm etkinlikleri (kilitlenmeler, önemli olmayanlar ve ANR'ler gibi) analiz eder ve sorunlar adı verilen etkinlik grupları oluşturur. Bir sorundaki tüm etkinliklerin ortak bir hata noktası vardır.
Geliştirilmiş analiz motoru, etkinlikleri bu sorunlar altında gruplandırmak için artık yığın izlemedeki çerçeveler, istisna mesajı, hata kodu ve diğer platform ya da hata türü özellikleri dahil olmak üzere etkinliğin birçok yönünü inceler.
Ancak bu etkinlik grubu içinde, hataya neden olan 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 artık sorunlar içinde varyantlar oluşturuyoruz. Her varyant, bir sorundaki aynı hata noktasına ve benzer bir yığın izlemeye sahip bir etkinlik alt grubudur. Varyantları kullanarak, bir sorun içindeki en yaygın yığın izlemelerde hata ayıklayabilir ve hataya yol açan farklı temel nedenlerin olup olmadığını belirleyebilirsiniz.
Bu iyileştirmelerle neler yaşayacaksınız?
Sorun satırında görüntülenen yenilenmiş meta veriler Uygulamanızdaki sorunları anlamak ve önceliklendirmek 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 hata ayıklamak için varyantları kullanın.
Daha anlamlı uyarılar ve sinyaller Yeni bir sorun aslında yeni bir hatayı temsil etmektedir.
Daha güçlü arama Her sorun, istisna türü ve paket adı gibi daha fazla aranabilir meta veri içerir.
Bu iyileştirmelerin kullanıma sunulma şekli:
Uygulamanızdan yeni etkinlikler aldığımızda, bunların mevcut bir sorunla eşleşip eşleşmediğini kontrol ederiz.
Eşleşme olmazsa 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 varsa veya herhangi bir sorunla karşılaşırsanız lütfen
bildirimde bulunarak
bize bildirin.
Kilitlenme sorunu yaşanmayan metrikleri ve/veya hız uyarılarını görmeme
Kilitlenme sorunu yaşamayan kullanıcılar ve oturumlar gibi
çökme sorunu yaşamayan kullanıcılar ve oturumlar
ve/veya hız uyarıları görünmüyorsa
Crashlytics SDK v18.6.0+ (veya Firebase BoM v32.6.0+.)
İçerik haritası günlükleri gösterilmiyor
İçerik haritası 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:
Google Analytics için Firebase SDK'sının en azından aşağıdaki sürümünü kullandığınızdan emin olun: Android — 17.2.3 ve sonraki sürümler(BoM v24.7.1 ve sonraki sürümler).
ANR'ler neden yalnızca Android 11 ve sonraki sürümlerde raporlanır?
Crashlytics, Android 11 ve sonraki sürümleri çalıştıran cihazlardaki Android uygulamaları için ANR raporlamasını destekler. ANR'leri toplamak için kullandığımız temel API (getHistoryProcessExitExits) SIGQUIT veya Watchdog tabanlı yaklaşımlardan daha güvenilirdir. Bu API yalnızca Android 11 ve sonraki sürümleri çalıştıran cihazlarda kullanılabilir.
Bazı ANR'lerin BuildId'leri neden görünmüyor?
ANR'lerinizin bazılarında BuildId'leri eksikse aşağıdaki adımları uygulayarak sorunu giderin:
Güncel bir Crashlytics Android SDK ve Crashlytics Gradle eklentisi sürümü kullandığınızdan emin olun.
Android 11 ve bazı Android 12 ANR'leri için BuildId'larınız eksikse muhtemelen
güncel olmayan bir SDK, Gradle eklentisi veya her ikisini de kullanıyorsunuzdur.
Bu ANR'ler için BuildId öğelerini doğru şekilde toplamak üzere aşağıdaki sürümleri kullanmanız gerekir:
Crashlytics Gradle eklentisi 2.9.4 sürümü ve üzeri
Paylaşılan kitaplıklarınız için standart olmayan bir konum kullanıp kullanmadığınızı kontrol edin.
Yalnızca uygulamanızın paylaşılan kitaplıklarında BuildId eksikse büyük olasılıkla paylaşılan kitaplıklar için standart, varsayılan konumu kullanmıyorsunuzdur. Bu durumda Crashlytics, ilişkili BuildId öğelerini bulamayabilir. Paylaşılan kitaplıklar için standart konumu kullanmanızı öneririz.
Derleme işlemi sırasında BuildId'ları çıkarmadığınızdan emin olun.
Aşağıdaki sorun giderme ipuçlarının hem ANR'ler hem de yerel kilitlenmeler için geçerli olduğunu unutmayın.
İkili dosyalarınızda readelf -n çalıştırarak BuildId öğelerinin olup olmadığını kontrol edin. BuildId öğeleri yoksa derleme sisteminizin işaretlerine -Wl,--build-id ekleyin.
APK boyutunu küçültmek için yanlışlıkla BuildId öğelerini kaldırmadığınızdan emin olun.
Bir kitaplığın sadeleştirilmiş ve sadeleştirilmiş sürümlerini saklıyorsanız kodunuzda doğru sürümü belirttiğinizden emin olun.
Crashlytics kontrol panelindeki ANR raporları ile Google Play Console'daki ANR raporları arasındaki farklar
ANR sayısı, Google Play ile Crashlytics arasında uyumsuz olabilir. ANR verilerini toplama ve raporlama mekanizmalarındaki farklılık nedeniyle bu beklenen bir durumdur. Crashlytics, ANR'leri uygulama tekrar başlatıldığında bildirirken Android vitals, ANR verilerini ANR gerçekleştikten sonra gönderir.
Ayrıca Crashlytics, yalnızca Android 11 ve sonraki sürümleri çalıştıran cihazlarda gerçekleşen ANR'leri gösterir. Google Play; Google Play Hizmetleri ve veri toplama izninin kabul edildiği cihazlarda gerçekleşen ANR'leri gösterir.
Crashlytics kontrol panelindeki NDK yığın izlemeleri ile logcat arasındaki farklar
LLVM ve GNU araç zincirleri, uygulamanızın ikili programlarının salt okunur segmenti için farklı varsayılan ayarlara ve işlemlere sahiptir. Bu durum, Firebase konsolunda tutarsız yığın izlemelere (stack trace) neden olabilir. Bu sorunu azaltmak için derleme işleminize aşağıdaki bağlayıcı flag'lerini ekleyin:
LLVM araç zincirinden lld bağlayıcısını kullanıyorsanız şunu ekleyin:
-Wl,--no-rosegment
GNU araç zincirinden ld.gold bağlayıcısını kullanıyorsanız şunu ekleyin:
-Wl,--rosegment
Yığın izleme tutarsızlıklarını görmeye devam ediyorsanız (veya işaretlerden hiçbiri araç zincirinizle ilgili değilse) bunun yerine aşağıdakileri derleme işleminize eklemeyi deneyin:
-fno-omit-frame-pointer
NDK için kendi Breakpad simge dosyası oluşturma ikili programımı nasıl kullanabilirim?
Crashlytics eklentisi, özelleştirilmiş bir Breakpad sembol dosyası oluşturma aracı sunar.
Breakpad simge dosyaları oluşturmak için kendi ikili programınızı kullanmayı tercih ederseniz (örneğin, derleme zincirinizdeki tüm yerel yürütülebilir dosyaları kaynaktan derlemeyi tercih ederseniz) yürütülebilir dosyanın yolunu belirtmek için isteğe bağlı symbolGeneratorBinary uzantısı özelliğini kullanın.
Breakpad simge dosyası oluşturucu ikili programının yolunu iki şekilde belirtebilirsiniz:
1. Seçenek: Yolu build.gradle dosyanızdaki firebaseCrashlytics uzantısı aracılığıyla belirtin
Uygulama düzeyindeki build.gradle.kts dosyanıza aşağıdakileri ekleyin:
Gradle eklentisi 3.0.0+ sürümü
android {
buildTypes {
release {
configure<CrashlyticsExtension> {
nativeSymbolUploadEnabled = true
// Add these optional fields to specify the path to the executable
symbolGeneratorType = "breakpad"
breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
}
daha düşük eklenti sürümleri
android {
// ...
buildTypes {
// ...
release {
// ...
firebaseCrashlytics {
// existing; required for either symbol file generator
nativeSymbolUploadEnabled true
// Add this optional new block to specify the path to the executable
symbolGenerator {
breakpad {
binary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
}
}
2. Seçenek: Yolu Gradle özellikleri dosyanızdaki bir özellik satırı aracılığıyla belirtin
Yürütülebilir dosyanın yolunu belirtmek için com.google.firebase.crashlytics.breakpadBinary özelliğini kullanabilirsiniz.
Gradle özellikleri dosyanızı manuel olarak veya komut satırı aracılığıyla güncelleyebilirsiniz. Örneğin, yolu komut satırı aracılığıyla belirtmek için aşağıdaki gibi bir komut kullanın:
Neden .kt dosyada .java sorunları olarak etiketlenmiş kilitlenmeler görüyorum?
Bir uygulama, dosya uzantısını açığa çıkarmayan bir kod karartıcı kullandığında Crashlytics, varsayılan olarak her sorunu bir .java dosya uzantısıyla oluşturur.
Crashlytics'in doğru dosya uzantısıyla sorun oluşturabilmesi için uygulamanızın aşağıdaki kurulumu kullandığından emin olun:
Android Gradle 4.2.0 veya sonraki bir sürümü kullanır
Kod karartma açık şekilde R8 kullanır. Uygulamanızı R8'e güncellemek için bu belgeleri uygulayın.
Yukarıda açıklanan ayarları güncelledikten sonra, mevcut .java sorunlarının kopyaları olan yeni .kt sorunlarını görmeye başlayabileceğinizi unutmayın. Bu durumla ilgili daha fazla bilgi edinmek için SSS sayfasına göz atın.
Neden mevcut .java sorunlarının kopyası olan .kt sorun görüyorum?
Crashlytics, Aralık 2021'in ortasından itibaren Kotlin kullanan uygulamalara yönelik desteği iyileştirdi.
Yakın zamana kadar, mevcut kod karartıcılar dosya uzantısını göstermemişti. Bu nedenle Crashlytics, varsayılan olarak her sorunu .java dosya uzantısıyla oluşturuyordu.
Ancak Android Gradle 4.2.0'dan itibaren R8, dosya uzantılarını desteklemektedir.
Bu güncellemeyle birlikte Crashlytics, artık uygulamada kullanılan her sınıfın Kotlin dilinde yazılmış olup olmadığını belirleyip sorun imzasına doğru dosya adını ekleyebiliyor. Uygulamanızda aşağıdaki ayarlar kullanılıyorsa kilitlenmeler artık .kt dosyalarıyla doğru şekilde ilişkilendiriliyor (uygun olduğu şekilde):
Uygulamanız Android Gradle 4.2.0 veya sonraki bir sürümü kullanıyor.
Uygulamanızda kod karartma açık olarak R8 kullanılıyor.
Yeni kilitlenmeler artık sorun imzalarında doğru dosya uzantısını içerdiğinden, .java etiketli mevcut sorunların kopyaları olan yeni .kt sorunları görebilirsiniz. Firebase konsolunda, .java etiketli mevcut bir sorunun kopyası olabilecek yeni bir .kt sorunu olup olmadığını belirleyip sizinle iletişim kurmaya çalışırız.
Bir sorunla ilgili notları kimler görüntüleyebilir, yazabilir ve silebilir?
Notlar, proje üyelerinin sorular, durum güncellemeleri vb. konularla ilgili belirli sorunlar hakkında yorum yapmasına olanak tanır.
Bir proje üyesi not yayınladığında, bu not ilgili kişinin Google hesabının e-posta adresiyle etiketlenir. Bu e-posta adresi, notla birlikte, notu görüntüleme erişimi olan tüm proje üyeleri tarafından görülebilir.
Aşağıda notları görüntülemek, yazmak ve silmek için gereken erişim izni açıklanmaktadır:
Aşağıdaki rollerden herhangi birine sahip proje üyeleri mevcut notları görüntüleyip silebilir ve bir sorun hakkında yeni notlar yazabilir.
Bir sorunla ilgili notları kimler görüntüleyebilir, yazabilir ve silebilir?
Notlar, proje üyelerinin sorular, durum güncellemeleri vb. konularla ilgili belirli sorunlar hakkında yorum yapmasına olanak tanır.
Bir proje üyesi not yayınladığında, bu not ilgili kişinin Google hesabının e-posta adresiyle etiketlenir. Bu e-posta adresi, notla birlikte, notu görüntüleme erişimi olan tüm proje üyeleri tarafından görülebilir.
Aşağıda notları görüntülemek, yazmak ve silmek için gereken erişim izni açıklanmaktadır:
Aşağıdaki rollerden herhangi birine sahip proje üyeleri mevcut notları görüntüleyip silebilir ve bir sorun hakkında yeni notlar yazabilir.
Uygulama ayrıca Google Mobile Ads SDK'sını kullanıyor ancak kilitlenme almıyor
Projeniz, Google Mobile Ads SDK'sı ile birlikte Crashlytics'i kullanıyorsa kilitlenme bildiricileri, istisna işleyicileri kaydederken müdahale ediyor olabilir. Sorunu düzeltmek için disableSDKCrashReporting numaralı telefonu arayarak Mobile Ads SDK'sında kilitlenme raporlamayı devre dışı bırakın.
BigQuery veri kümem nerede bulunuyor?
Crashlytics'i BigQuery'ye bağladıktan sonra, oluşturduğunuz yeni veri kümeleri Firebase projenizin konumundan bağımsız olarak otomatik olarak ABD'de depolanır.
Platform desteği
Crashlytics, Ermenistanı destekliyor mu?
Firebase Crashlytics NDK, ARMv5'i (Ermeabi) desteklemez.
Bu ABI için destek, NDK r17 itibarıyla kaldırılmıştır.
Geri çekilen sorunlar
Geri çekilen sorun nedir?
Daha önce sorunu kapattığınızda bir sorun gerileme yaşanmıştır ancak Crashlytics, sorunun yeniden oluştuğunu belirten yeni bir rapor alır.
Crashlytics, geri çekilen bu sorunları otomatik olarak yeniden açar. Böylece bu sorunları uygulamanıza uygun şekilde ele alabilirsiniz.
Aşağıda, Crashlytics'in bir sorunu regresyon olarak nasıl sınıflandırdığını açıklayan örnek bir senaryo verilmiştir:
Crashlytics, ilk kez Crash "A" ile ilgili kilitlenme raporu alıyor. Crashlytics, söz konusu kilitlenmeye karşılık gelen bir sorunu açar ("A" sorunu).
Bu hatayı hızlıca düzeltip "A" sorununu kapatır ve ardından uygulamanızın yeni bir sürümünü yayınlarsınız.
Siz sorunu kapattıktan sonra Crashlytics, "A" Sorunu ile ilgili bir rapor daha alır.
Rapor, Crashlytics'in sorunu ne zaman kapattığınızda bildiğim bir uygulama sürümüne aitse (yani, ilgili sürüm herhangi bir kilitlenme için kilitlenme raporu göndermişse) Crashlytics, bu sorunu regresyon olarak değerlendirmez. Sorun kapalı kalacaktır.
Rapor, Crashlytics'in sorunu ne zaman kapattığınızı bilmediği bir uygulama sürümünden geliyorsa (yani ilgili sürüm herhangi bir kilitlenme için hiçhiç kilitlenme raporu göndermediyse) Crashlytics, geri dönen sorunu değerlendirir ve sorunu yeniden açar.
Bir sorun geri döndüğünde, regresyon algılama uyarısı gönderir ve Crashlytics'in sorunu yeniden başlattığını bildirmek için soruna bir regresyon sinyali ekleriz. Regresyon algoritmamız nedeniyle bir sorunun yeniden açılmasını istemiyorsanız sorunu kapatmak yerine "sesi kapatın".
Neden eski uygulama sürümlerinde geri dönen sorunlar görüyorum?
Rapor, sorunu kapattığınızda hiç kilitlenme raporu göndermemiş eski bir uygulama sürümünden geliyorsa Crashlytics, sorunun geri çekildiğini kabul eder ve sorunu yeniden açar.
Bu durum şu durumda meydana gelebilir: Bir hatayı düzeltmiş ve uygulamanızın yeni bir sürümünü yayınlamış olmanıza rağmen hâlâ hata düzeltmesi olmayan eski sürümleri kullanan kullanıcılarınız vardır. Sorunu kapattığınızda bu eski sürümlerden biri hiç hiç kilitlenme raporu göndermediyse ve bu kullanıcılar hatayla karşılaşmaya başladıysa bu kilitlenme raporları geri çekilen sorunu tetikler.
Regresyon algoritmamız nedeniyle bir sorunun yeniden açılmasını istemiyorsanız sorunu kapatmak yerine "sesi kapatın".