| Platform seçin: | iOS+ Android Flutter Unity |
Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde bir sorunu tıklayarak ayrıntılı etkinlik raporu alabilirsiniz. Uygulamanızda neler olduğunu ve Crashlytics hizmetine bildirilen etkinliklerle ilgili koşulları daha iyi anlamanıza yardımcı olması için bu raporları özelleştirebilirsiniz.
Uygulamanızı özel anahtarları, özel günlük mesajlarını ve kullanıcı kimliklerini günlüğe kaydedecek şekilde yapılandırın.
İstisnaları Crashlytics adresine bildirin.
Uygulamanız Google Analytics için Firebase SDK'sını kullanıyorsa breadcrumb kayıtlarını 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örmenizi sağlar.
Otomatik Crash Reporting'i devre dışı bırakın ve kullanıcılarınız için onaylı raporlamayı etkinleştirin. Crashlytics, varsayılan olarak uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak toplar.
Özel anahtar ekleme
Özel anahtarlar, uygulamanızın kilitlenmeden önceki durumunu öğrenmenize yardımcı olur. Kilitlenme raporlarınızla rastgele anahtar/değer çiftlerini 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 etkinlik için ilişkili özel anahtarları görüntüleyebilir (Anahtarlar alt sekmesi) 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, value parametresi için aşırı yüklenmiştir ve herhangi bir temel veya String bağımsız değişkenini kabul eder. 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 ö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 olaylar hakkında daha fazla bilgi 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ülediğinizde Günlükler sekmesinde gösterir (tüm sorunlarınızı Firebase Console'un DevOps ve Etkileşim > Crashlytics kontrol panelinde görebilirsiniz).
Sorunları tespit etmek için log aracını kullanın. Örneğin:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Kullanıcı kimliklerini ayarlama
Bir sorunu teşhis etmek için genellikle hangi kullanıcılarınızın belirli bir kilitlenme yaşadığını bilmek faydalı olur. Crashlytics, kilitlenme raporlarınızda 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:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Ayarladığınız bir kullanıcı kimliğini temizlemeniz gerekirse değeri boş bir dizeye sıfırlayın. Kullanıcı kimliğini temizlemek, mevcut Crashlytics kayıtlarını 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 özel anahtarlar, özel günlükler, kullanıcı kimlikleri gibi meta veriler eklemek için isteğe bağlı olarak C++ kodunuza crashlytics.h başlığını ekleyebilirsiniz. Tüm bu seçenekler bu sayfanın üst kısmında 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 kullanma talimatları için üst dosyadaki yorumları okuyun.
Bellek bozulması sorunlarını ayıklamak için GWP-ASan raporlarını ekleme
Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerde hata ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkilendirilebilir. Bellek bozulması, uygulama güvenliği açıklarının başlıca nedenidir.
Firebase Console'un DevOps ve Etkileşim > Crashlytics kontrol panelinde bu verilerle şunları yapabilirsiniz:
Bir sorunun ayrıntılarını tıkladığınızda bu verileri yeni "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ını alabilirsiniz. GWP-ASan kurulumunuzu Android belgelerindeki örnek yerel kodu kullanarak test edebilirsiniz.
Önemli olmayan istisnaları bildirme
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydetmenize ve uygulamanız bir sonraki başlatıldığında bunları size göndermenize olanak tanır.
Uygulamanızın catch bloklarındaki önemli olmayan istisnaları kaydetmek için recordException 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 istisnalara ö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 ve Etkileşim > Crashlytics kontrol panelinde ö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ının etkilenmesini 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 getirir ve uygulama bir sonraki sefer başlatıldığında gönderir.
Breadcrumb günlüklerini alma
Breadcrumb kayıtları, bir kullanıcının kilitlenme, önemli olmayan hata veya ANR etkinliğine yol açan uygulama 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.
Breadcrumb kayıtları Google Analytics tarafından desteklenir. Bu nedenle, breadcrumb kayıtlarını almak için Firebase projenizde Google Analytics'i etkinleştirmeniz ve uygulamanıza Google Analytics için Firebase SDK'sını eklemeniz gerekir. Bu koşullar karşılandıktan sonra, bir sorunun ayrıntılarını görüntülerken breadcrumb kayıtları Kayıtlar sekmesindeki etkinlik verilerine otomatik olarak dahil edilir (Tüm sorunlarınızı Firebase konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelinde görebilirsiniz).
Analytics SDK'sı, screen_view etkinliğini otomatik olarak günlüğe kaydeder. Bu sayede breadcrumb kayıtları, kilitlenme, önemli olmayan hata veya ANR etkinliğinden önce görüntülenen ekranların listesini gösterebilir. screen_view breadcrumb kaydı, firebase_screen_class parametresi içeriyor.
Breadcrumb günlükleri, kullanıcının oturumu içinde manuel olarak günlüğe kaydettiğiniz tüm özel etkinliklerle (etkinliğin parametre verileri dahil) de doldurulur. Bu veriler, kilitlenme, önemli olmayan hata veya ANR etkinliğine yol açan bir dizi kullanıcı işlemini gösterebilir.
Breadcrumb kayıtlarını dolduran veriler de dahil olmak üzere Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın.
Etkinleştirme raporlamasını etkinleştirme
Crashlytics, uygulamanızın tüm kullanıcıları için kilitlenme raporlarını varsayılan olarak otomatik olarak toplar. Kullanıcılara gönderdikleri veriler üzerinde daha fazla kontrol sağlamak için otomatik raporlamayı devre dışı bırakıp yalnızca kodunuzda seçtiğinizde Crashlytics hizmetine veri göndererek raporlamaya dahil olmayı etkinleştirebilirsiniz.
Otomatik toplamayı devre dışı bırakmak için
AndroidManifest.xmldosyanızınapplicationbloğuna birmeta-dataetiketi 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şlemlerinde geçerli olur. Böylece Crashlytics, söz konusu kullanıcı için otomatik olarak rapor toplayabilir.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Kullanıcı daha sonra veri toplamayı kapsamı dışında kalmayı seçerse geçersiz kılma değeri olarak
falsedeğerini iletebilirsiniz. Bu değer, kullanıcı uygulamayı bir sonraki başlatışında uygulanır ve kullanıcının sonraki tüm başlatma işlemlerinde geçerli olur.
Crash Insights verilerini yönetme
Crash Insights, anonimleştirilmiş yığın izlemelerinizi diğer Firebase uygulamalarından alınan 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. Crash Insights, birçok sorun için kilitlenmeyle ilgili hata 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 konsolunun DevOps ve Etkileşim > Crashlytics kontrol panelindeki sorun listesinin üst kısmında bulunan Crash Insights menüsünden Crash Insights'ı devre dışı bırakabilirsiniz.
Sonraki adımlar
- Verilerinizi BigQuery veya Cloud Logging platformuna aktararak verilerinizi sorgulama, özel kontrol panelleri oluşturma ve özel uyarılar ayarlama gibi gelişmiş analiz ve özelliklerden yararlanın.