Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu sayfada, sorun giderme yardımı ve Crashlytics kullanımıyla ilgili sık sorulan soruların yanıtları 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 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 görebilirsiniz. Bunun nedeni:
2023'ün başlarında, etkinlikleri gruplandırmak için geliştirilmiş bir analiz motorunun yanı sıra güncellenmiş bir tasarım ve yeni sorunlar için bazı gelişmiş özellikler (varyantlar gibi) kullanıma sunduk. 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 (ör. kilitlenmeler, ölümcül olmayan hatalar ve ANR'ler) analiz eder ve sorun adlı 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 sorundaki bu olası farkı temsil etmek için artık sorunlarda varyantlar oluşturuyoruz. Her varyant, bir sorundaki aynı hata noktasına ve benzer yığın izlemeye sahip etkinliklerin alt grubudur. Varyantlar sayesinde, bir sorundaki en yaygın yığın izlemelerinden hata ayıklama yapabilir ve farklı temel nedenlerin hataya yol açıp açmadığını belirleyebilirsiniz.
Bu iyileştirmeler sayesinde şunları deneyimleyebilirsiniz:
Sorun satırında gösterilen meta veriler yenilendi Artık uygulamanızdaki sorunları daha kolay anlayabilir ve önceliklendirebilirsiniz.
Daha az yinelenen sorun Satır numarası değişikliği yeni bir soruna neden olmaz.
Çeşitli kök nedenleri olan karmaşık sorunların daha kolay hata ayıklanması Bir sorundaki en yaygın yığın izlemelerinden 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 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 gruplandırmamızda 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 kilitlenme sorunu yaşamayan metrikler ve/veya hız uyarıları görmüyorsanız
Crashlytics SDK v18.6.0+ (veya Firebase BoM v32.6.0+)
İçerik haritası günlükleri gösterilmiyor
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:
Özellikle Google Analytics için Firebase SDK'sının aşağıdaki sürümünü en az kullandığınızdan emin olun: Android — v17.2.3+(BoM v24.7.1+).
ANR'ler neden yalnızca Android 11 ve üzeri sürümlerde bildirilir?
Crashlytics, Android 11 ve sonraki sürümleri çalıştıran cihazlardaki Android uygulamaları için ANR raporlamayı destekler. ANR'leri toplamak için kullandığımız temel API (getHistoricalProcessExitReasons), SIGQUIT veya gözetleyici tabanlı yaklaşımlardan daha güvenilirdir. Bu API yalnızca Android 11 ve sonraki sürümleri çalıştıran cihazlarda kullanılabilir.
Why are some ANRs missing
their BuildIds?
ANR'lerinizin bazılarında BuildId eksikse aşağıdaki şekilde sorun giderin:
Güncel bir Crashlytics Android SDK'sı ve Crashlytics Gradle eklentisi sürümü kullandığınızdan emin olun.
Android 11 ve bazı Android 12 ANR'leri için BuildId'ler eksikse muhtemelen güncel olmayan bir SDK, Gradle eklentisi veya her ikisini birden 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 v2.9.4 ve sonraki sürümler
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ı için BuildId eksikse paylaşılan kitaplıklar için standart, varsayılan konumu kullanmıyor olabilirsiniz. Bu durumda Crashlytics, ilişkili BuildId'leri 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 dosyalarının olup olmadığını kontrol edin. BuildId yoksa derleme sisteminizin işaretlerine -Wl,--build-id ekleyin.
APK boyutunuzu küçültmek için BuildId'leri yanlışlıkla kaldırmadığınızdan emin olun.
Bir kitaplığın sarmalanmış ve sarmalanmış olmayan 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 arasındaki farklar
Google Play ile Crashlytics arasındaki ANR sayıları arasında uyuşmazlık olabilir. ANR verilerini toplama ve raporlama mekanizmasındaki farklılık nedeniyle bu durum beklenir. Crashlytics, uygulama bir sonraki sefer açıldığında ANR'leri bildirir. Android Vitals ise ANR oluştuktan sonra ANR verilerini gönderir.
Ayrıca Crashlytics, yalnızca Android 11 ve sonraki sürümleri çalıştıran cihazlarda meydana gelen 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ç zincirlerinde, uygulamanızın ikili dosyalarının salt okunur segmenti için farklı varsayılan değerler ve işlemler vardır. Bu durum, Firebase konsolunda tutarsız yığın izlemeleri oluşturabilir. Bu sorunu azaltmak için derleme sürecinize aşağıdaki bağlayıcı işaretlerini ekleyin:
LLVM araç setindeki lld bağlayıcıyı kullanıyorsanız şunları 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şturucu ikili dosyamı nasıl kullanırım?
Crashlytics eklentisi, özelleştirilmiş bir Breakpad simge dosyası oluşturma aracı sunar.
Breakpad simge dosyalarını oluşturmak için kendi ikili dosyanızı kullanmayı tercih ediyorsanız (ör. derleme zincirinizdeki tüm yerel yürütülebilir dosyaları kaynaktan derlemeyi tercih ediyorsanız) yürütülebilir dosyanın yolunu belirtmek için isteğe bağlı symbolGeneratorBinary uzantı özelliğini kullanın.
Breakpad simge dosyası oluşturucu ikili dosyası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 ve sonraki sürümler
android{buildTypes{release{configure<CrashlyticsExtension>{nativeSymbolUploadEnabled=true// Add these optional fields to specify the path to the executablesymbolGeneratorType="breakpad"breakpadBinary=file("/PATH/TO/BREAKPAD/DUMP_SYMS")}}}}
daha eski eklenti sürümleri
android{// ...buildTypes{// ...release{// ...firebaseCrashlytics{// existing; required for either symbol file generatornativeSymbolUploadEnabledtrue// Add this optional new block to specify the path to the executablesymbolGenerator{breakpad{binaryfile("/PATH/TO/BREAKPAD/DUMP_SYMS")}}}}}
2. Seçenek: Gradle mülk dosyanızda bir mülk satırı aracılığıyla yolu belirtin
Yürütülebilir dosyanın yolunu belirtmek için com.google.firebase.crashlytics.breakpadBinary özelliğini kullanabilirsiniz.
Gradle özellik dosyanızı manuel olarak veya komut satırı üzerinden güncelleyebilirsiniz. Örneğin, yolu komut satırı üzerinden belirtmek için aşağıdaki gibi bir komut kullanın:
Neden .java sorunu olarak etiketlenen .kt dosyalarında kilitlenmeler görüyorum?
Bir uygulama, dosya uzantısını göstermeyen bir karartıcı kullandığında Crashlytics, her sorunu varsayılan olarak .java dosya uzantısıyla oluşturur.
Crashlytics'ün doğru dosya uzantısıyla sorun oluşturabilmesi için uygulamanızda aşağıdaki kurulumun kullanıldığından emin olun:
Android Gradle 4.2.0 veya sonraki sürümleri kullanır.
Karartma etkinken R8 kullanılır. Uygulamanızı R8'e güncellemek için bu dokümanları inceleyin.
Yukarıda açıklanan ayarları güncelledikten sonra, mevcut .java sorunlarının tekrarı 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.
Mevcut .java sorunlarının kopyası olan .kt sorunlarını neden görüyorum?
Aralık 2021'in ortasından itibaren Crashlytics, Kotlin kullanan uygulamalar için desteği iyileştirdi.
Yakın zamana kadar, kullanılabilir kod karartıcılar dosya uzantısını göstermiyordu. Bu nedenle, Crashlytics her sorunu varsayılan olarak .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, uygulamada kullanılan her sınıfın Kotlin'de yazılıp yazılmadığını belirleyebilir ve sorun imzasına doğru dosya adını ekleyebilir. Uygulamanızda aşağıdaki kurulum varsa kilitlenmeler artık .kt dosyalarıyla (uygun olduğu şekilde) doğru şekilde ilişkilendiriliyor:
Uygulamanız Android Gradle 4.2.0 veya sonraki bir sürümü kullanıyor.
Uygulamanızda karartma özelliği etkinken 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, yeni bir .kt sorununun mevcut bir .java etiketli sorunun kopyası olup olmadığını tespit edip size bildirmeye çalışıyoruz.
Bir sorunla ilgili notları kimler görüntüleyebilir, yazabilir ve silebilir?
Notlar, proje üyelerinin belirli sorunlarla ilgili soru, durum güncellemesi vb. yorumlar yapmasına olanak tanır.
Proje üyeleri tarafından eklenen notlar, ilgili üyenin Google Hesabı e-posta adresiyle etiketlenir. Bu e-posta adresi, notu görüntüleme erişimi olan tüm proje üyelerine notla birlikte gösterilir.
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 belirli sorunlarla ilgili soru, durum güncellemesi vb. yorumlar yapmasına olanak tanır.
Proje üyeleri tarafından eklenen notlar, ilgili üyenin Google Hesabı e-posta adresiyle etiketlenir. Bu e-posta adresi, notu görüntüleme erişimi olan tüm proje üyelerine notla birlikte gösterilir.
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.
Uygulama, Google Mobile Ads SDK'sını da kullanıyor ancak kilitlenmiyor
Projeniz Google Mobile Ads SDK'sı ile birlikte Crashlytics kullanıyorsa kilitlenme bildiricileri, istisna işleyicileri kaydederken müdahale ediyor olabilir. Sorunu düzeltmek için disableSDKCrashReporting numaralı telefondan Mobile Ads SDK'sında kilitlenme raporlamayı devre dışı bırakın.
BigQuery veri kümem nerede bulunur?
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.
Platform desteği
Crashlytics, armeabi'yi destekliyor mu?
Firebase Crashlytics NDK, ARMv5'i (armeabi) desteklemez.
Bu ABI desteği, NDK r17'den itibaren kaldırılmıştır.
Geri çekilen sorunlar
Gerileyen sorun nedir?
Daha önce kapattığınız bir sorunla ilgili olarak Crashlytics, sorunun tekrar ortaya çıktığına dair yeni bir rapor alır.
Crashlytics, gerileyen bu sorunları otomatik olarak yeniden açar. Böylece, uygulamanıza uygun şekilde ele alabilirsiniz.
Crashlytics'ün bir sorunu nasıl gerileme olarak sınıflandırdığını açıklayan örnek bir senaryo aşağıda verilmiştir:
Crashlytics, "A" kilitlenmesiyle ilgili ilk kez bir kilitlenme raporu alır. Crashlytics, bu kilitlenmeyle ilgili ilgili 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.
Crashlytics, sorunu kapattıktan sonra "A" sorunuyla ilgili başka bir rapor alır.
Rapor, sorunu kapattığınızda Crashlytics'nin bildiği bir uygulama sürümünden geliyorsa (yani sürüm, herhangi bir kilitlenme için kilitlenme raporu göndermişse) Crashlytics, sorunun gerilediği sonucuna varmaz. Sorun kapatılır.
Rapor, sorunu ne zaman kapattığınızı Crashlyticsbilmediği bir uygulama sürümüne aitse (yani ilgili sürüm, herhangi bir kilitlenme için hiçhiç kilitlenme raporu göndermediyse) Crashlytics, geri çekilen sorunu dikkate alır ve sorunu yeniden açar.
Bir sorun gerilediğinde, Crashlytics'ün sorunu yeniden açtığını size bildirmek için bir gerileme algılama uyarısı gönderir ve soruna bir gerileme sinyali ekleriz. Regresyon algoritmamız nedeniyle bir sorunun yeniden açılmasını istemiyorsanız sorunu kapatmak yerine "sesi kapatın".
Eski uygulama sürümlerinde neden gerileme sorunları görüyorum?
Rapor, sorunu kapattığınızda hiç kilitlenme raporu göndermemiş eski bir uygulama sürümüne aitse Crashlytics, sorunun geri çekildiğini kabul eder ve sorunu yeniden açar.
Bu durum aşağıdaki durumda ortaya çıkabilir: Bir hatayı düzelttiniz ve uygulamanızın yeni sürümünü yayınladınız, ancak uygulamanızın eski sürümlerini kullanan ve bu hatayı düzeltme almayan kullanıcılarınız hâlâ var. 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 dönük bir sorunu tetikler.
Regresyon algoritmamız nedeniyle bir sorunun yeniden açılmasını istemiyorsanız sorunu kapatmak yerine "sesi kapatın".
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2024-11-18 UTC."],[],[]]