了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

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

Bu kılavuz, Firebase Crashlytics SDK'sını kullanarak kilitlenme raporlarınızı nasıl özelleştireceğinizi açıklamaktadır. Crashlytics, varsayılan olarak, 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 kaydolma raporlamasını 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 neden olan belirli durumunu almanı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:

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

Bir CustomKeysAndValues ​​örneğini setCustomKeys örnek yöntemine geçirerek 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 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ı belirlemenize 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ı 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ı, belirteç veya karma değer biçiminde benzersiz bir tanımlayıcı atayın:

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Ayarladıktan sonra bir kullanıcı tanımlayıcısını silmeniz gerekirse, değeri boş bir dizeye sıfırlayın. Bir kullanıcı tanımlayıcısının silinmesi mevcut Crashlytics kayıtlarını kaldırmaz. Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekirse Firebase destek ekibiyle iletişime geçin .

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

NDK kilitlenme raporlarına özel anahtarlar , özel günlükler , kullanıcı tanımlayıcıları gibi meta veriler eklemek için C++ kodunuza isteğe bağlı olarak crashlytics.h başlığını dahil edebilirsiniz. Tüm bu seçenekler yukarıdaki sayfada açıklanmıştır.

crashlytics.h , Firebase Android SDK GitHub Deposu'nda yalnızca üstbilgi içeren bir C++ kitaplığı olarak mevcuttur.

NDK C++ API'lerini kullanmayla ilgili talimatlar için başlık dosyasındaki yorumları okuyun.

Bellek bozulması sorunlarını gidermek için GWP-ASan raporlarını dahil edin

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üvenlik açıklarının önde gelen nedeni olan uygulamanızdaki bellek bozulmasıyla ilişkilendirilebilir.

  • 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ı bir şekilde 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. Android belgelerindeki örnek yerel kodu kullanarak GWP-ASan kurulumunuzu test edebilirsiniz.

Önemli olmayan istisnaları bildir

Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydetmenize olanak tanır ve uygulamanız bir sonraki başlatılışında bunları size gönderir.

Uygulamanızın catch bloklarında önemli olmayan özel durumları 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 ö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 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. Crashlytics, kullanıcılarınızın ağ trafiğini azaltmak için günlüğe kaydedilen istisnaları bir araya toplar ve uygulamanın 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 isteğe bağlı 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 toplamayı geçersiz kılmayı çağırarak belirli kullanıcılar için 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 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önetin

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 bile sağlar.

Crash Insights, ortak kararlılık eğilimlerini belirlemek için birleştirilmiş 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.