| Platform seçin: | iOS+ Android Flutter Unity |
Bir sorunu tıklayarak Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde ayrıntılı bir etkinlik raporu alabilirsiniz. Uygulamanızda neler olduğunu ve Crashlytics'a bildirilen etkinliklerle ilgili koşulları daha iyi anlamak için bu raporları özelleştirebilirsiniz.
Uygulamanıza özel anahtarlar, günlük mesajları ve kullanıcı kimlikleri kaydedecek şekilde izleme kodu ekleyin.
Crashlytics için istisnaları bildirin.
Uygulamanız Google Analytics için Firebase SDK'sını kullanıyorsa otomatik olarak iz kaydı günlükleri alın. Bu günlükler, uygulamanızda Crashlytics ile toplanan bir etkinliğe yol açan kullanıcı işlemlerine dair görünürlük sağlar.
Otomatik kilitlenme raporlamayı devre dışı bırakın ve kullanıcılarınız için katılıma dayalı raporlamayı etkinleştirin. Crashlytics'nın varsayılan olarak uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak topladığını unutmayın.
Özel anahtar ekleme
Özel anahtarlar, uygulamanızın kilitlenmeye yol açan belirli durumunu elde etmenize yardımcı olur. Kilitlenme raporlarınızla rastgele anahtar/değer çiftleri ilişkilendirebilir, ardından Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde kilitlenme raporlarını aramak ve filtrelemek için özel anahtarları kullanabilirsiniz.
Özel bir anahtarla eşleşen sorunları arayabilirsiniz.
Konsolda belirli bir sorunu incelerken her 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. setCustomKey, herhangi bir temel veya String bağımsız değişkenini kabul etmek için value parametresi için aşırı yüklenmiştir. Aşağıda bazı örnekler verilmiştir:
Kotlin
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
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 öğesinin bir örneğini setCustomKeys örnek yöntemine ileterek anahtar/değer çiftlerini toplu olarak ekleyin:
Kotlin
Kotlin'de mevcut işlev, 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ı ekleme
Kilitlenmeye yol açan etkinliklerle ilgili daha fazla bağlam bilgisi edinmek için uygulamanıza özel Crashlytics günlükleri ekleyebilirsiniz. Crashlytics, günlükleri kilitlenme verilerinizle ilişkilendirir ve bir sorunun ayrıntılarını görüntülerken Günlükler sekmesinde gösterir (Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde tüm sorunlarınızı görebilirsiniz).
Sorunları belirlemek için log simgesini kullanın. Örneğin:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Kullanıcı tanımlayıcılarını ayarlama
Bir sorunu teşhis etmek için genellikle kullanıcılarınızdan hangisinin belirli bir kilitlenme yaşadığını bilmek faydalıdır. 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 oluşturulmuş değer biçiminde benzersiz bir tanımlayıcı atayın:
Kotlin
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ş bir dizeye sıfırlayın. Kullanıcı tanımlayıcısının temizlenmesi, mevcut Crashlytics kayıtları kaldırmaz. Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekiyorsa Firebase Destek Ekibi ile iletişime geçin.
(Yalnızca Android NDK) NDK kilitlenme raporlarına meta veri ekleme
NDK kilitlenme raporlarına meta veri eklemek için C++ kodunuza isteğe bağlı olarak crashlytics.h başlığını ekleyebilirsiniz. Örneğin, özel anahtarlar, özel günlükler, kullanıcı tanımlayıcıları. Bu seçeneklerin tümü yukarıdaki bu sayfada açıklanmıştır.
crashlytics.h, Firebase Android SDK GitHub deposunda yalnızca başlık içeren bir C++ kitaplığı olarak kullanılabilir.
NDK C++ API'lerini kullanmayla ilgili talimatlar için üst dosyadaki yorumları okuyun.
Bellek bozulması sorunlarında hata ayıklamak için GWP-ASan raporlarını ekleme
Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerin hatalarını ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkili olabilir. Bu durum, uygulama güvenliği açıklarının başlıca nedenidir.
Firebase konsolunun DevOps & Engagement > Crashlytics kontrol panelinde bu verilerle şunları yapabilirsiniz:
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ızlıca görüntülemek için yeni "GWP-ASan raporu" sinyalini ve filtresini kullanabilirsiniz.
Uygulamanızda GWP-ASan'ı açıkça etkinleştirirseniz ve NDK v18.3.6+ (Firebase BoM v31.3.0+) için Crashlytics SDK'sını kullanırsanız GWP-ASan bellek raporları alabilirsiniz. GWP-ASan kurulumunuzu Android belgelerindeki örnek yerel kodu kullanarak test edebilirsiniz.
Önemli olmayan hata istisnalarını bildirme
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra önemli olmayan istisnaları kaydetmenize ve uygulamanız bir sonraki kez başlatıldığında bunları size göndermenize olanak tanır.
Uygulamanızın recordException bloklarındaki önemli olmayan hataları kaydetmek için catch yöntemini kullanın. Örneğin:
Kotlin
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 }
Ayrıca, belirli önemli olmayan hata istisnalarına özel anahtarlar da ekleyebilirsiniz. Örneğin:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
Kaydedilen tüm istisnalar, Firebase konsolunun DevOps & Engagement > Crashlytics kontrol panelinde önemli olmayan hatalar olarak görünür. Sorun özeti, normalde kilitlenmelerden 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 kaydedilen istisnaları birlikte gruplandırır ve uygulama bir sonraki başlatıldığında gönderir.
İçerik haritası günlüklerini alma
Breadcrumb günlükleri, bir kullanıcının kilitlenme, önemli olmayan hata veya ANR etkinliğine yol açan uygulama etkileşimleri hakkında daha iyi bir fikir edinmenizi sağlar. Bu günlükler, bir sorunu yeniden oluşturmaya ve hata ayıklamaya çalışırken faydalı olabilir.
Breadcrumb günlükleri Google Analytics tarafından desteklenir. Bu nedenle, breadcrumb günlüklerini almak için Firebase projenizde Google Analytics'i etkinleştirmeniz ve uygulamanıza Google Analytics için Firebase SDK'sını eklemeniz gerekir. Bu şartlar karşılandıktan sonra, bir sorunun ayrıntılarını görüntülerken breadcrumb günlükleri Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde bir etkinliğin verilerine otomatik olarak eklenir (tüm sorunlarınızı Günlükler sekmesinde görebilirsiniz).
Analytics SDK'sı,
screen_view etkinliğini otomatik olarak günlüğe kaydeder
. Bu sayede,
kilitlenme, önemli olmayan hata veya ANR etkinliğinden önce görüntülenen ekranların listesini göstermek için breadcrumb kaydı günlükleri kullanılabilir. Bir screen_view breadcrumb kaydı, firebase_screen_class parametresini içeriyor.
Ayrıca, kullanıcı oturumunda manuel olarak günlüğe kaydettiğiniz tüm özel etkinlikler (etkinliğin parametre verileri dahil) de izleme yolu günlüklerine eklenir. Bu veriler, kilitlenme, önemli olmayan hata veya ANR etkinliğine yol açan bir dizi kullanıcı işlemini göstermeye yardımcı olabilir.
Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın. Bu veriler, gezinme yolu günlüklerini dolduran verileri de içerir.
Etkinleştirme raporlamasını etkinleştirme
Crashlytics, varsayılan olarak 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 imkanı sunmak için otomatik raporlamayı devre dışı bırakıp yalnızca kodunuzda istediğiniz zaman Crashlytics'a veri göndererek izinli raporlamayı etkinleştirebilirsiniz.
AndroidManifest.xmldosyanızınapplicationbloğuna, otomatik toplamayı devre dışı bırakmak içinmeta-dataetiketini ekleyin:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />Çalışma zamanında Crashlytics veri toplama geçersiz kılma işlevini çağırarak belirli kullanıcılar için veri toplamayı etkinleştirin. Geçersiz kılma değeri, uygulamanızın sonraki tüm başlatma işlemleri boyunca geçerli olur. Böylece Crashlytics, söz konusu kullanıcı için raporları otomatik olarak toplayabilir.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Kullanıcı daha sonra veri toplamayı devre dışı bırakırsa geçersiz kılma değeri olarak
falsedeğerini iletebilirsiniz. Bu değer, kullanıcı uygulamayı bir sonraki kez başlattığında uygulanır ve bu kullanıcının sonraki tüm başlatma işlemleri için geçerli olmaya devam eder.
Kilitlenme analizleri verilerini yönetme
Kilitlenme analizleri, anonimleştirilmiş yığın izlemelerinizi diğer Firebase uygulamalarındaki izlemelerle karşılaştırarak sorunları çözmenize yardımcı olur ve sorununuzun daha büyük bir trendin parçası olup olmadığını bildirir. Kilitlenme Analizleri, birçok sorunda kilitlenmeyi ayıklamanıza yardımcı olacak kaynaklar da sunar.
Kilitlenme Analizleri, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemiyorsanız Firebase konsolunun DevOps & Engagement > Crashlytics kontrol panelindeki sorun listesinin üst kısmında yer alan Kilitlenme Analizleri menüsünden Kilitlenme Analizleri'ni devre dışı bırakabilirsiniz.
Sonraki adımlar
- Verilerinizi sorgulama, özel kontrol panelleri oluşturma ve özel uyarılar ayarlama gibi gelişmiş analizler ve özellikler için verilerinizi BigQuery veya Cloud Logging'ya aktarın.