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

Crashlytics kontrol panelinde bir sorunu tıklayıp ayrıntılı etkinlik raporu alabilirsiniz. Uygulamanızda neler olduğunu ve Crashlytics'e bildirilen etkinliklerle ilgili koşulları daha iyi anlamanıza yardımcı olması için bu raporları özelleştirebilirsiniz.

  • Uygulamanız Google Analytics için Firebase SDK'sını kullanıyorsa içerik haritası günlüklerini otomatik olarak alın. Bu günlükler, uygulamanızda Crashlytics tarafından toplanan bir etkinliğe yol açan kullanıcı işlemlerini görebilmenizi sağlar.

  • Otomatik kilitlenme raporlamasını kapatın ve kullanıcılarınız için kaydolma raporlarını etkinleştirin. Varsayılan olarak Crashlytics, uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak toplar.

Özel anahtar ekle

Özel anahtarlar, uygulamanızın kilitlenmeye yol açan belirli durumunu öğrenmenize yardımcı olur. Rastgele anahtar/değer çiftlerini kilitlenme raporlarınızla ilişkilendirebilir, ardından özel anahtarları kullanarak Firebase konsolunda kilitlenme raporlarını arayabilir ve filtreleyebilirsiniz.

  • Crashlytics kontrol panelinde, özel bir anahtarla eşleşen sorunları arayabilirsiniz.

  • Konsolda belirli bir sorunu incelerken, her bir 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. value parametresinin herhangi bir temel veya String bağımsız değişkenini kabul etmesi için setCustomKey öğesinin aşırı yüklendiğini unutmayın. Aşağıda birkaç örnek verilmiştir:

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ğırarak ve farklı bir değere ayarlayarak da değiştirebilirsiniz. Örnek:

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");

setCustomKeys örnek yöntemine CustomKeysAndValues örneği ileterek anahtar/değer çiftlerini toplu olarak ekleyin:

Kotlin+KTX

Kotlin'in mevcut işlevi, 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ı ekleyin

Kilitlenmeye yol açan olaylarla ilgili daha fazla bağlam bilgisi sağlamak 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ı tespit etmek için log kullanın. Örnek:

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

Kullanıcı tanımlayıcıları ayarlama

Bir sorunu teşhis etmek için, belirli bir kilitlenmeyi hangi kullanıcılarınızın yaşadığını bilmek genellikle yararlıdır. Crashlytics, kilitlenme raporlarınızda kullanıcıları anonim olarak tanımlamanızı sağlayan bir yol sunar.

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+KTX

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ş 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 destek ekibiyle iletişime geçin.

(Yalnızca Android NDK) NDK kilitlenme raporlarına meta veri ekleme

İsteğe bağlı olarak NDK kilitlenme raporlarına özel anahtarlar, özel günlükler veya kullanıcı tanımlayıcıları gibi meta veriler eklemek için C++ kodunuza crashlytics.h üstbilgisini ekleyebilirsiniz. Tüm bu seçenekler, yukarıdaki sayfada açıklanmaktadır.

crashlytics.h, Firebase Android SDK GitHub Deposu'nda yalnızca başlık içeren C++ kitaplığı olarak kullanılabilir.

NDK C++ API'larının kullanımıyla ilgili talimatlar için başlık dosyasındaki yorumları okuyun.

Bellek bozulması sorunlarını ayıklamak için GWP-ASan raporlarını dahil et

Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarının neden olduğu kilitlenmelerde hata ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulama güvenliği güvenlik açıklarının başlıca nedeni olan uygulamanızdaki bellek bozulmasıyla ilişkili olabilir.

  • Crashlytics kontrol panelinde bir sorunun ayrıntılarını tıkladığınızda bu verileri yeni bir "Bellek yığını izlemeleri" 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 kullanıyorsanız GWP-ASan bellek raporlarını alabilirsiniz. Android dokümanlarındaki örnek yerel kodu kullanarak GWP-ASan kurulumunuzu test edebilirsiniz.

Önemli olmayan istisnaları bildirin

Crashlytics, uygulamanızdaki kilitlenmeleri otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydetmenize olanak tanır ve uygulamanızın bir sonraki açılışında bu istisnaları size gönderir.

Önemli olmayan istisnaları uygulamanızın catch engellemesine kaydetmek için recordException yöntemini kullanın. Örnek:

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 ö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ü ve donanım cihazına göre dökümleri içerir.

Crashlytics, uygulamanızın performans üzerindeki 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 grupları birlikte istisnaları günlüğe kaydeder ve uygulama bir sonraki açılışında bunları gönderir.

İçerik haritası günlüklerini alma

İçerik haritası günlükleri, kullanıcıların uygulamanızla, kilitlenme, önemli olmayan veya ANR olaylarına neden olan etkileşimlerini daha iyi anlamanızı 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 desteklenmektedir. Bu nedenle, içerik haritası günlüklerini almak amacıyla Firebase projeniz için Google Analytics'i etkinleştirmeniz ve uygulamanıza Google Analytics için Firebase SDK'sını eklemeniz gerekir. Bu gereksinimler karşılandıktan sonra, sorunun ayrıntılarını görüntülediğinizde içerik haritası günlükleri, etkinlik verilerine otomatik olarak eklenir. Günlükler sekmesine eklenir.

Analytics SDK'sı, screen_view etkinliğini otomatik olarak günlüğe kaydeder. Böylece içerik haritası günlüklerinde, kilitlenme, önemli olmayan veya ANR etkinliğinden önce görüntülenen ekranların listesi gösterilir. screen_view içerik haritası günlüğü, firebase_screen_class parametresi içerir.

İçerik haritası günlükleri, etkinliğin parametre verileri dahil olmak üzere, kullanıcının oturumunda manuel olarak günlüğe kaydettiğiniz tüm özel etkinliklerle de doldurulur. Bu veriler; kilitlenme, önemli olmayan veya ANR etkinliğine yol açan bir dizi kullanıcı işlemini göstermeye yardımcı olabilir.

İçerik haritası günlüklerini dolduran verileri içeren Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın.

Raporlamaya dahil olmayı 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 olanağı sağlamak için otomatik raporlamayı devre dışı bırakarak ve Crashlytics'e yalnızca kodunuzda istediğiniz zaman veri göndererek kayıt raporlamayı etkinleştirebilirsiniz:

  1. Otomatik toplamayı kapatmak için AndroidManifest.xml dosyanızın application bloğuna bir meta-data etiketi ekleyin:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Çalışma zamanında Crashlytics veri toplama geçersiz kılmasını çağırarak belirli kullanıcılar için veri toplamayı etkinleştirin. Geçersiz kılma değeri, uygulamanızın her lansmanında aynı kalır. Böylece Crashlytics, raporları otomatik olarak toplayabilir. Otomatik kilitlenme raporları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 geçerli olmaz.

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

Crash Insights verilerini yönetme

Crash Insights, anonimleştirilmiş yığın izlerinizi diğer Firebase uygulamalarındaki 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. Crash Insights, birçok sorun için kilitlenme hatalarını ayıklamanıza yardımcı olacak kaynaklar da sağlar.

Crash Insights, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemiyorsanız Firebase konsolunda Crashlytics sorun listenizin üst kısmında bulunan Crash Insights menüsünden Kilitlenme Analizleri'ni devre dışı bırakabilirsiniz.