Crashlytics kontrol panelinde bir sorunu tıklayarak ayrıntılı bir etkinlik raporu alabilirsiniz. Bu raporları, uygulamanızda neler olduğunu ve Crashlytics'a bildirilen etkinliklerle ilgili koşulları daha iyi anlamanıza yardımcı olacak şekilde özelleştirebilirsiniz.
Uygulamanızı özel anahtarlar, özel günlük mesajları ve kullanıcı tanımlayıcıları kaydedecek şekilde ayarlayın.
Crashlytics için istisnaları bildirin.
Uygulamanız Google Analytics için Firebase SDK'sını kullanıyorsa breadcrumb günlüklerini otomatik olarak alın. Bu günlükler, uygulamanızda Crashlytics ile toplanan bir etkinliğe yol açan kullanıcı işlemlerini görmenizi sağlar.
Otomatik kilitlenme raporlamayı devre dışı bırakın ve kullanıcılarınız için katılıma dayalı raporlamayı etkinleştirin. Crashlytics'nın varsayılan olarak uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak topladığını unutmayın.
Özel anahtar ekleme
Özel anahtarlar, uygulamanızın kilitlenmeye yol açan belirli durumunu almanıza yardımcı olur. Kilitlenme raporlarınızla rastgele anahtar/değer çiftleri ilişkilendirebilir, ardından Firebase konsolunda kilitlenme raporlarını aramak ve filtrelemek için özel anahtarları kullanabilirsiniz.
Crashlytics kontrol panelinde, özel bir anahtarla eşleşen sorunları arayabilirsiniz.
Konsolda belirli bir sorunu incelerken her etkinlikle ilişkili özel anahtarları (Anahtarlar alt sekmesi) görüntüleyebilir ve hatta etkinlikleri özel anahtarlara göre filtreleyebilirsiniz (sayfanın üst kısmındaki Filtre menüsü).
Anahtar/değer çiftlerini ayarlamak için setCustomKey
örnek yöntemini kullanın. setCustomKey
, herhangi bir temel veya String
bağımsız değişkenini kabul etmek için value
parametresi için aşırı yüklenmiştir. Aşağıda bazı örnekler verilmiştir:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
Mevcut bir anahtarın değerini, anahtarı çağırıp farklı bir değere ayarlayarak da değiştirebilirsiniz. Örneğin:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
CustomKeysAndValues
örneğini setCustomKeys
örnek yöntemine ileterek anahtar/değer çiftlerini toplu olarak ekleyin:
Kotlin
Kotlin'de mevcut işlev, CustomKeysAndValues
oluşturucuyu kullanmaktan daha basittir.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
Özel günlük mesajları ekleme
Kilitlenmeye yol açan etkinlikler hakkında daha fazla bilgi edinmek için uygulamanıza özel Crashlytics günlükleri ekleyebilirsiniz. Crashlytics, günlükleri kilitlenme verilerinizle ilişkilendirir ve Firebase konsolunun Crashlytics sayfasındaki Günlükler sekmesinde gösterir.
Sorunları belirlemek için log
simgesini kullanın. Örneğin:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Kullanıcı tanımlayıcılarını ayarlama
Bir sorunu teşhis etmek için genellikle kullanıcılarınızdan hangisinin belirli bir kilitlenme yaşadığını bilmek faydalıdır. Crashlytics, kilitlenme raporlarınızdaki kullanıcıları anonim olarak tanımlamanın bir yolunu içerir.
Raporlarınıza kullanıcı kimlikleri eklemek için her kullanıcıya kimlik numarası, jeton veya karma oluşturma işlemi uygulanmış değer biçiminde benzersiz bir tanımlayıcı atayın:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Bir kullanıcı tanımlayıcısını ayarladıktan sonra temizlemeniz gerekirse değeri boş bir dizeye sıfırlayın. Kullanıcı tanımlayıcısının temizlenmesi mevcut kayıtları kaldırmaz.Crashlytics Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekiyorsa Firebase destek ekibiyle iletişime geçin.
(Yalnızca Android NDK) NDK kilitlenme raporlarına meta veri ekleme
NDK kilitlenme raporlarına meta veri eklemek için C++ kodunuza isteğe bağlı olarak crashlytics.h
üst bilgisini ekleyebilirsiniz. Örneğin, özel anahtarlar, özel günlükler, kullanıcı tanımlayıcıları. Bu seçeneklerin tümü yukarıdaki sayfada açıklanmıştır.
crashlytics.h
, Firebase Android SDK GitHub deposunda yalnızca başlık içeren bir C++ kitaplığı olarak kullanılabilir.
NDK C++ API'lerini kullanmayla ilgili talimatlar için üstbilgi dosyasındaki yorumları okuyun.
Bellek bozulması sorunlarını ayıklamak için GWP-ASan raporlarını dahil etme
Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerin hatalarını ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkili olabilir. Bu durum, uygulama güvenliği açıklarının başlıca nedenidir.
Crashlytics kontrol panelinde bir sorunun ayrıntılarını tıkladığınızda bu verileri yeni bir "Bellek yığını izleri" sekmesinde görüntüleyebilirsiniz.
Bu verilerle ilgili tüm sorunları hızlıca görüntülemek için yeni "GWP-ASan raporu" sinyalini ve filtresini de kullanabilirsiniz.
Uygulamanızda GWP-ASan'ı açıkça etkinleştirirseniz ve NDK v18.3.6+ (Firebase BoM v31.3.0+) için Crashlytics SDK'sını kullanırsanız GWP-ASan bellek raporları alabilirsiniz. GWP-ASan kurulumunuzu Android belgelerindeki örnek yerel kodu kullanarak test edebilirsiniz.
Önemli olmayan hata bildirme
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra önemli olmayan istisnaları kaydetmenize ve uygulamanız bir sonraki başlatıldığında bunları size göndermenize olanak tanır.
Uygulamanızın recordException
bloklarındaki önemli olmayan istisnaları kaydetmek için catch
yöntemini kullanın. Örneğin:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Ayrıca, belirli ölümcül olmayan istisnalara özel anahtarlar da ekleyebilirsiniz. Örneğin:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
Kaydedilen tüm istisnalar, Firebase konsolunda önemli olmayan sorunlar olarak görünür. Sorun özeti, normalde kilitlenmelerden aldığınız tüm durum bilgilerinin yanı sıra Android sürümüne ve donanım cihazına göre dökümleri içerir.
Crashlytics, uygulamanızın performansı üzerindeki etkiyi en aza indirmek için istisnaları özel bir arka plan iş parçacığında işler. Crashlytics, kullanıcılarınızın ağ trafiğini azaltmak için günlüğe kaydedilen istisnaları birlikte gruplandırır ve uygulama bir sonraki başlatıldığında gönderir.
İçerik haritası günlüklerini alma
Breadcrumb günlükleri, bir kullanıcının kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan uygulama etkileşimleri hakkında daha iyi bilgi edinmenizi sağlar. Bu günlükler, bir sorunu yeniden oluşturmaya ve hata ayıklamaya çalışırken faydalı olabilir.
İçerik haritası günlükleri Google Analytics tarafından desteklenir. Bu nedenle, içerik haritası günlüklerini almak için Firebase projenizde Google Analytics'i etkinleştirmeniz ve uygulamanıza Google Analytics için Firebase SDK'sını eklemeniz gerekir. Bu şartlar karşılandıktan sonra, bir sorunun ayrıntılarını görüntülerken içerik haritası günlükleri Günlükler sekmesindeki etkinlik verilerine otomatik olarak eklenir.
Analytics SDK'sı, screen_view
etkinliğini otomatik olarak günlüğe kaydeder. Bu sayede, kilitlenme, ölümcül olmayan veya ANR etkinliğinden önce görüntülenen ekranların listesini göstermek için izleme kaydı günlükleri kullanılabilir. screen_view
izleme kaydı, firebase_screen_class
parametresini içeriyor.
Ayrıca, kullanıcı oturumunda manuel olarak günlüğe kaydettiğiniz tüm özel etkinlikler (etkinliğin parametre verileri dahil) ile de izleme kaydı günlükleri doldurulur. Bu veriler, kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan bir dizi kullanıcı işlemini göstermeye yardımcı olabilir.
Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın. Bu veriler, izleme kaydı günlüklerini dolduran verileri de içerir.
Etkinleştirme raporlamasını etkinleştirme
Varsayılan olarak Crashlytics, uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak toplar. Kullanıcılara gönderdikleri veriler üzerinde daha fazla kontrol olanağı sunmak için otomatik raporlamayı devre dışı bırakıp yalnızca kodunuzda seçtiğiniz zaman Crashlytics'a veri göndererek izinli raporlamayı etkinleştirebilirsiniz.
application
dosyanızınAndroidManifest.xml
bloğunda, otomatik toplamayı devre dışı bırakmak içinmeta-data
etiketi ekleyin:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Çalışma zamanında Crashlytics data collection geçersiz kılma işlevini çağırarak belirli kullanıcılar için veri toplamayı etkinleştirin. Geçersiz kılma değeri, uygulamanızın sonraki tüm başlatma işlemleri boyunca geçerli olur. Böylece Crashlytics, söz konusu kullanıcı için raporları otomatik olarak toplayabilir.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Kullanıcı daha sonra veri toplamayı devre dışı bırakırsa geçersiz kılma değeri olarak
false
değerini iletebilirsiniz. Bu değer, kullanıcı uygulamayı bir sonraki kez başlattığında uygulanır ve bu kullanıcının sonraki tüm başlatma işlemleri için geçerli olmaya devam eder.
Kilitlenme analizleri verilerini yönetme
Kilitlenme analizleri, anonimleştirilmiş yığın izlemelerinizi diğer Firebase uygulamalarındaki izlemelerle karşılaştırarak sorunları çözmenize yardımcı olur ve sorununuzun daha büyük bir trendin parçası olup olmadığını bildirir. Kilitlenme Analizleri, birçok sorunda kilitlenmeyi ayıklamanıza yardımcı olacak kaynaklar da sunar.
Kilitlenme Analizleri, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemiyorsanız Firebase konsolundaki Crashlytics sorun listenizin üst kısmındaki Çökme Analizleri menüsünden Çökme Analizleri'ni devre dışı bırakabilirsiniz.