Catch up on everthing we announced at this year's Firebase Summit. Learn more

Firebase Crashlytics kilitlenme raporlarınızı özelleştirin

Bu kılavuz, Firebase Crashlytics SDK'yı kullanarak kilitlenme raporlarınızı nasıl özelleştireceğinizi açıklar. Varsayılan olarak, Crashlytics otomatik olarak tüm uygulamanızın kullanıcılar (Otomatik Kilitlenme raporu kapatıp açabilir için çökme raporları toplar raporlama opt-etkinleştirmek yerine kullanıcılar için). : Crashlytics dört kutudan günlük mekanizmalar sağlar özel anahtarlar , özel günlükleri , kullanıcı tanımlayıcıları ve yakalandı 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.

  • In Crashlytics pano , özel bir anahtarla eşleşmesi konularda arama yapabilirsiniz.

  • Konsolda belirli bir sorunu incelerken, her bir etkinlik (Tuşlar alt sekmesi) ve hatta özel tuşlar ile olayları filtrelemek (sayfanın üst kısmında Filtre menüsü) için ilişkili özel anahtarlar görüntüleyebilirsiniz.

Kullanım setCustomKey grubu anahtar / değer çiftleri için örnek yöntemi. Bu Not setCustomKey için aşırı value parametresi bir primitif veya kabul etmek String değişken. İş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ğırıp 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")
}

Bir örneğini geçen toplu olarak anahtar / değer çiftleri ekleme CustomKeysAndValues için setCustomKeys örnek yöntemi:

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şlevselliği kullanmaktan daha basit CustomKeysAndValues oluşturucu.

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 ortakları arasında Crashlytics sayfasında Çökme verileri ve görüntüler bunları birlikte günlükleri Firebase konsolunun Kayıtlar sekmesi altında.

Kullanım log yardım belirlemekte konulara. Ö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")

Ayarladıktan sonra bir kullanıcı tanımlayıcısını 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. Eğer bir kullanıcı kimliği ile ilişkili kayıtları silmeniz gerekirse kontak Firebase desteği .

(Android NDK only) NDK kilitlenme raporları meta Ekle

Sen dahil isteğe olabilir crashlytics.h sizin C gibi NDK çökme raporları, meta veri ekleme ++ kodu başlığı özel tuşlar , özel günlükleri , kullanıcı tanımlayıcıları . Tüm bu seçenekler yukarıdaki bu sayfada açıklanmıştır.

crashlytics.h bir başlık okunur C ++ kütüphanesi olarak kullanılabilir Firebase JumpBox GitHub Repository .

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.

Kullanım recordException uygulamanızın içinde ölümcül olmayan istisnalar kayıt yöntemini catch blokları. Ö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.

Kaydolma 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:

  1. In application sizin blok AndroidManifest.xml dosyası, eklemek meta-data otomatik toplama özelliğini kapatmak için etiketi:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Ç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 kazasında raporlama devre dışı bırakmak için, geçiş false geçersiz kılma değeri olarak. Ayarlandığında false , yeni değer Uygulamanın bir sonraki dönemde dek geçerli değildir.

    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. Eğer uygulamanızın verilerini paylaşmamayı tercih ediyorsanız, devre dışı bırakabilirsiniz Crash Insights menüsünden Crash Insights'tan içinde Crashlytics sorun listesinin en üstünde Firebase konsoluna .