Bu kılavuz, Firebase Crashlytics SDK'yı kullanarak kilitlenme raporlarınızı nasıl özelleştireceğinizi açıklar. 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 kullanıcılarınız için katılım raporlamasını etkinleştirebilirsiniz ). Crashlytics, kullanıma hazır dört günlüğe kaydetme mekanizması sağlar: özel anahtarlar , özel günlükler , kullanıcı tanımlayıcıları ve yakalanan istisnalar .
Özel anahtarlar ekle
Özel anahtarlar, uygulamanızın çökmeye neden olan belirli durumunu anlamanıza 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 panosunda , özel bir anahtarla eşleşen sorunları arayabilirsiniz.
Konsolda belirli bir sorunu incelerken, her olay için ilişkili özel anahtarları görüntüleyebilir ( Anahtarlar alt sekmesi) ve hatta olayları ö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. value
parametresinin herhangi bir ilkel veya String
bağımsız değişkenini kabul etmesi için setCustomKey
aşırı yüklendiğini unutmayın. İşte bazı örnekler:
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 */);
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 }
Ayrıca, anahtarı çağırarak ve onu farklı bir değere ayarlayarak mevcut bir anahtarın değerini değiştirebilirsiniz. Örneğin:
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
setCustomKeys
CustomKeysAndValues
ileterek anahtar/değer çiftlerini toplu olarak ekleyin:
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);
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) }
Özel günlük mesajları ekleyin
Kilitlenmeye neden olan olaylar hakkında kendinize daha fazla bağlam sağlamak 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ı saptamaya yardımcı olması için log
kullanın. Örneğin:
Java
FirebaseCrashlytics.getInstance().log("message");
Kotlin+KTX
Firebase.crashlytics.log("message")
Kullanıcı tanımlayıcılarını ayarla
Bir sorunu teşhis etmek için, hangi kullanıcılarınızın belirli bir kilitlenme yaşadığını bilmek genellikle yardımcı 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ı, jeton veya karma değer biçiminde benzersiz bir tanımlayıcı atayın:
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Bir kullanıcı tanımlayıcısını ayarladıktan sonra temizlemeniz 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ği ile iletişime geçin .
tutucu97 l10n-yer(Yalnızca Android NDK) NDK kilitlenme raporlarına meta veri ekleyin
İsteğe bağlı olarak, özel anahtarlar , özel günlükler , kullanıcı tanımlayıcıları gibi NDK kilitlenme raporlarına meta veriler eklemek için C++ kodunuza crashlytics.h
başlığını dahil edebilirsiniz. Tüm bu seçenekler yukarıdaki bu sayfada açıklanmıştır.
crashlytics.h
, Firebase Android SDK GitHub Repository'de yalnızca üst bilgi içeren bir C++ kitaplığı olarak mevcuttur.
NDK C++ API'lerini kullanma talimatları için başlık dosyasındaki yorumları okuyun.
Önemli olmayan istisnaları bildirin
Crashlytics, uygulamanızın çökmelerini otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydetmenize ve uygulamanız bir sonraki başlatılışında bunları size göndermenize olanak tanır.
Uygulamanızın catch
bloklarında önemli olmayan istisnaları kaydetmek için recordException
yöntemini kullanın. Örneğin:
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Kotlin+KTX
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Kaydedilen tüm istisnalar, Firebase konsolunda önemli 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 arızaları içerir.
Crashlytics, uygulamanızın performans etkisini en aza indirmek için özel bir arka plan iş parçacığında istisnaları işler. Kullanıcılarınızın ağ trafiğini azaltmak için Crashlytics, günlüğe kaydedilen istisnaları bir araya toplar ve uygulama bir sonraki başlatılışında bunları gönderir.
tutucu103 l10n-yerKaydolma 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 yalnızca kodunuzda seçtiğinizde Crashlytics'e veri göndererek katılım raporlamasını etkinleştirebilirsiniz:
AndroidManifest.xml
dosyanızınapplication
bloğuna, otomatik toplamayı kapatmak için birmeta-data
etiketi ekleyin:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Çalışma zamanında Crashlytics veri toplama geçersiz kılmayı çağırarak belirli kullanıcılar için toplamayı etkinleştirin. Geçersiz kılma değeri, uygulamanızın lansmanları 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.Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Crash Insights verilerini yönetin
Crash Insights, anonimleştirilmiş yığın izlemelerinizi diğer Firebase uygulamalarından gelen izlemelerle karşılaştırarak ve sorununuzun daha büyük bir trendin parçası olup olmadığını size bildirerek sorunları çözmenize yardımcı olur. Birçok sorun için Crash Insights, kilitlenmede hata ayıklamanıza yardımcı olacak kaynaklar bile 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 ederseniz, Firebase konsolundaki Crashlytics sorun listenizin üst kısmındaki Crash Insights menüsünden Crash Insights'ı devre dışı bırakabilirsiniz.