Bu kılavuzda, Firebase Crashlytics SDK'yı kullanarak kilitlenme raporlarınızı nasıl özelleştireceğiniz açıklanmaktadır. Varsayılan olarak Crashlytics, uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak toplar (bunun yerine otomatik kilitlenme raporlamasını kapatabilir ve bunun yerine kullanıcılarınız için isteğe bağlı raporlamayı etkinleştirebilirsiniz ). Crashlytics, kullanıma hazır dört günlük kaydı mekanizması sağlar: özel anahtarlar , özel günlükler , kullanıcı tanımlayıcıları ve yakalanan istisnalar .
Özel anahtarlar ekleyin
Özel anahtarlar, uygulamanızın çökmeye yol açacak spesifik durumunu öğrenmenize yardımcı olur. Rastgele anahtar/değer çiftlerini kilitlenme raporlarınızla 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 etkinlik için ilişkili özel anahtarları görüntüleyebilir ( Anahtarlar alt sekmesi) 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
value
parametresinin herhangi bir ilkel veya String
argümanını kabul etmesi için aşırı yüklendiğini unutmayın. İşte bazı örnekler:
Kotlin+KTX
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+KTX
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+KTX
Kotlin için mevcut işlevsellik, CustomKeysAndValues
oluşturucusunu 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ı ekleyin
Kilitlenmeye yol açan olaylarla ilgili kendinize daha fazla bağlam kazandırmak için uygulamanıza özel Crashlytics günlükleri ekleyebilirsiniz. Crashlytics, günlükleri kilitlenme verilerinizle ilişkilendirir ve bunları Firebase konsolunun Crashlytics sayfasında Günlükler sekmesi altında görüntüler.
Sorunları belirlemeye yardımcı olması için log
kullanın. Örneğin:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Kullanıcı tanımlayıcılarını ayarlayın
Bir sorunu teşhis etmek için hangi kullanıcılarınızın belirli bir kilitlenmeyle karşılaştığını bilmek genellikle yararlı olur. 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ı, belirteç veya karma değeri biçiminde benzersiz bir tanımlayıcı atayın:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Bir kullanıcı tanımlayıcısını ayarladıktan sonra silmeniz gerekirse değeri boş bir dizeye sıfırlayın. Bir kullanıcı tanımlayıcısının temizlenmesi mevcut Crashlytics kayıtlarını kaldırmaz. Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekiyorsa Firebase desteğiyle iletişime geçin .
(Yalnızca Android NDK) NDK kilitlenme raporlarına meta veriler ekleme
NDK kilitlenme raporlarına özel anahtarlar , özel günlükler , kullanıcı tanımlayıcıları gibi meta veriler eklemek için isteğe bağlı olarak crashlytics.h
üstbilgisini C++ kodunuza ekleyebilirsiniz. Tüm bu seçenekler yukarıdaki sayfada açıklanmıştır.
crashlytics.h
, Firebase Android SDK'sı GitHub Repository'de yalnızca başlıktan oluşan bir C++ kitaplığı olarak mevcuttur.
NDK C++ API'lerini kullanma talimatları için başlık dosyasındaki yorumları okuyun.
Bellek bozulması sorunlarında hata ayıklamak için GWP-ASan raporlarını ekleyin
Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerde hata ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulamanızdaki güvenlik açıklarının önde gelen nedeni olan bellek bozulmasıyla ilişkilendirilebilir.
Crashlytics kontrol panelinde bir sorunun ayrıntılarına tıkladığınızda bu verileri yeni bir "Bellek yığını izleri" sekmesinde görüntüleyebilirsiniz.
Bu verilerle ilgili tüm sorunları hızla 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'yı kullanırsanız GWP-ASan bellek raporları alabilirsiniz. GWP-ASan kurulumunuzu Android belgelerindeki örnek yerel kodu kullanarak test edebilirsiniz.
Önemli olmayan istisnaları bildirin
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak raporlamanın yanı sıra, önemli olmayan istisnaları kaydetmenize ve uygulamanızın bir sonraki başlatılışında bunları size göndermenize olanak tanır.
Uygulamanızın catch
bloklarına önemli olmayan istisnaları kaydetmek için recordException
yöntemini kullanın. Örneğin:
Kotlin+KTX
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 }
Kaydedilen tüm istisnalar, Firebase konsolunda ölümcül olmayan sorunlar olarak görünür. Sorun özeti, normalde çökmelerden 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 de içerir.
Crashlytics, uygulamanızın performans üzerindeki etkisini en aza indirmek için istisnaları özel bir arka plan iş parçacığında işler. Kullanıcılarınızın ağ trafiğini azaltmak için Crashlytics, günlüğe kaydedilen istisnaları bir araya toplar ve uygulamanın bir sonraki başlatılışında bunları gönderir.
Katılım raporlamasını etkinleştir
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 sağlamak için, otomatik raporlamayı devre dışı bırakarak ve Crashlytics'e verileri yalnızca kodunuzda seçtiğinizde göndererek isteğe bağlı raporlamayı etkinleştirebilirsiniz:
Otomatik toplamayı kapatmak için
AndroidManifest.xml
dosyanızınapplication
bloğuna birmeta-data
etiketi ekleyin:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Çalışma zamanında Crashlytics veri toplamayı geçersiz kılmayı çağırarak seçili kullanıcılar için veri toplamayı etkinleştirin. Geçersiz kılma değeri, uygulamanızın başlatılması boyunca devam eder, böylece Crashlytics raporları otomatik olarak toplayabilir. Otomatik kilitlenme raporlamasını devre dışı bırakmak için geçersiz kılma değeri olarak
false
değerini iletin.false
olarak ayarlandığında, yeni değer uygulamanın bir sonraki çalıştırılmasına kadar uygulanmaz.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Crash Insights verilerini yönetin
Crash Insights, anonimleştirilmiş yığın izlerinizi diğer Firebase uygulamalarından gelen izlerle karşılaştırarak ve sorununuzun daha büyük bir eğilimin parçası olup olmadığını size bildirerek sorunları çözmenize yardımcı olur. Hatta Crash Insights birçok sorun için kilitlenme hatalarını ayıklamanıza yardımcı olacak kaynaklar da sağlar.
Crash Insights, ortak kararlılık eğilimlerini belirlemek için toplu kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmamayı tercih ediyorsanız Firebase konsolundaki Crashlytics sorun listenizin üst kısmındaki Crash Insights menüsünden Crash Insights'ı devre dışı bırakabilirsiniz.