Crashlytics kontrol panelinde bir sorunu tıklayıp ayrıntılı bilgi edinebilirsiniz etkinlik raporu. Bu raporları, uygulamanızda neler olduğunu ve Crashlytics'e bildirilen etkinliklerle ilgili koşulları daha iyi anlamanıza yardımcı olacak şekilde özelleştirebilirsiniz.
Yakalanmayan istisnaları ve yakalanan istisnaları Crashlytics'e bildirin.
Uygulamanızdan özel anahtarları özel günlük mesajları ve kullanıcı tanımlayıcıları.
Uygulamanız Google Analytics için Firebase SDK'sı. Bu günlükler, Uygulamanızda Crashlytics tarafından toplanan bir etkinlikle sonuçlanan kullanıcı işlemleri.
Otomatik kilitlenme raporlamasını kapatın ve Kullanıcılarınız için kayıt raporlamasını etkinleştirmeniz gerekir. Ancak, Varsayılan olarak, Crashlytics platformda yerel kilitlenme raporlarını otomatik olarak toplar değer katmış olacaksınız.
Yakalanmayan istisnaları bildirme
Tüm "önemli" bilgileri otomatik olarak yakalayabilirsiniz Flutter'ın içinde aracılığıyla iletilebilecek
çerçevesine uygun şekilde FlutterError.onError
öğesini geçersiz kılarak
FirebaseCrashlytics.instance.recordFlutterFatalError
. Alternatif olarak:
hem de "önemli olmayan" bilgileri istisnalar, FlutterError.onError
öğesini FirebaseCrashlytics.instance.recordFlutterError
ile geçersiz kıl:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
bool weWantFatalErrorRecording = true;
FlutterError.onError = (errorDetails) {
if(weWantFatalErrorRecording){
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
} else {
FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
}
};
runApp(MyApp());
}
Eşzamansız hatalar
Eşzamansız hatalar Flutter çerçevesi tarafından yakalanmaz:
ElevatedButton(
onPressed: () async {
throw Error();
}
...
)
Bu tür hataları yakalamak için PlatformDispatcher.instance.onError
işleyicisini kullanabilirsiniz:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
Flutter dışındaki hatalar
Flutter bağlamı dışında oluşan hataları yakalamak için
geçerli Isolate
üzerindeki dinleyici:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
Rapor yakalanan istisnalar
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra önemli olmayan istisnaları kaydetmenize olanak tanır ve bir sonraki önemli olay bildirildiğinde veya uygulama yeniden başlatıldığında bunları size gönderir.
Uygulamanızın yakalama dosyasında önemli olmayan istisnaları kaydetmek için recordError
yöntemini kullanın
engeller. Örneğin:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
Ayrıca, olası hatayla ilgili daha fazla bilgi de günlüğe kaydedebilirsiniz.
information
özelliğini kullanarak:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
Bu istisnalar, Firebase konsolunda önemli olmayan sorunlar olarak görünür. İlgili içeriği oluşturmak için kullanılan sorun özeti, normalde kilitlenme durumlarından aldığınız tüm durum bilgilerini içerir. sürüm ve donanım cihazı bazında dökümleri de görebilirsiniz.
Crashlytics, özel bir arka plan ileti dizisinde istisnaları şu amaçlarla işler: uygulamanız üzerindeki performans etkisini en aza indirmenize yardımcı olur. Kullanıcılarınızın ağını azaltmak için Crashlytics cihaz dışına gönderilen raporların sayısını hızlandırır. bakın.
Özel anahtarlar ekleyin
Özel anahtarlar, kilitlenmeye yol açan uygulama durumunu öğrenmenize yardımcı olur. Rastgele anahtar/değer çiftlerini kilitlenme raporlarınızla ilişkilendirebilir ve ardından, Firebase konsolunda kilitlenme raporlarını aramak ve filtrelemek için özel anahtarları kullanın.
Crashlytics kontrol panelinde, özel bir anahtarla eşleşen sorunları arayabilirsiniz.
Konsolda belirli bir sorunu incelerken her etkinlik için ilişkili özel anahtarlar kullanabilir (Anahtarlar alt sekmesi) ve hatta etkinlikleri özel anahtarlara göre (sayfanın üst kısmındaki Filtre menüsü) tıklayın.
Anahtar/değer çiftlerini ayarlamak için setCustomKey
örnek yöntemini kullanın. Aşağıda bazı örnekler verilmiştir:
// Set a key to a string.
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
// Set a key to a boolean.
FirebaseCrashlytics.instance.setCustomKey("bool_key", true);
// Set a key to an int.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1);
// Set a key to a long.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1L);
// Set a key to a float.
FirebaseCrashlytics.instance.setCustomKey("float_key", 1.0f);
// Set a key to a double.
FirebaseCrashlytics.instance.setCustomKey("double_key", 1.0);
Özel günlük mesajları ekleyin
Bir kilitlenmeye yol açan etkinliklerle ilgili daha fazla bağlam bilgisi sağlamak için özel Crashlytics günlüklerini kullanabilirsiniz. Crashlytics, günlükleri ilişkilendirir bu verileri takip eder ve Firebase konsolu, Crashlytics Günlükler sekmesi altında.
Sorunları belirlemeye yardımcı olması için log
kullanın. Örneğin:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
Kullanıcı tanımlayıcılarını ayarlama
Bir sorunu teşhis etmek için, hangi kullanıcılarınızın sorunla karşılaştığını bilmek genellikle yararlıdır en iyi yöntemin ne olduğunu öğreneceğiz. Crashlytics, kullanıcıların anonim olarak tanımlanmasını sağlayacak bir yöntem içerir: kilitlenme raporları gösterilmektedir.
Raporlarınıza kullanıcı kimlikleri eklemek için bir kimlik numarası, jeton veya karma oluşturma işlemi uygulanmış değer biçimi:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
Bir kullanıcı tanımlayıcısını ayarladıktan sonra onu temizlemeniz gerekirse değeri şu şekilde sıfırlayın: boş bir dize. Bir kullanıcı tanımlayıcısı temizlendiğinde mevcut tanımlayıcılar Crashlytics kayıtları. Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekiyorsa Firebase destek ekibiyle iletişime geçin.
İçerik haritası günlüklerini alma
İçerik haritası günlükleri, kullanıcının kilitlenme, önemli olmayan veya ANR etkinliğine neden olan sorunları içerir. Bu günlükler yardımcı olabilir.
İçerik haritası günlükleri, Google Analytics tarafından desteklenmektedir. Bu nedenle, içerik haritası günlüklerini almak için gerek Google Analytics'i etkinleştirme Firebase projeniz için Google Analytics için Firebase SDK'sını ekleyin ekleyin. Bu şartlar karşılandıktan sonra, içerik haritası günlükleri otomatik olarak ayrıntıları görüntülediğinizde Günlükler sekmesinde bir etkinlik verilerine eklenir bir sonucudur.
Analytics SDK'sı
screen_view
etkinliğini otomatik olarak günlüğe kaydeder
Bu, içerik haritası günlüklerinin
veya ANR olayını kapsar. screen_view
içerik haritası günlüğü
firebase_screen_class
parametresinden yararlanın.
İçerik haritası günlükleri ayrıca özel etkinliklerin bir listesini oluşturabilirsiniz. oturumuna ait verileri toplar. Bu veriler, seçtiğiniz seriyi göstermeye yardımcı olabilir Kilitlenme, önemli olmayan veya ANR etkinliğiyle sonuçlanan kullanıcı işlemlerinin sayısı.
Şunları yapabilirsiniz: Google Analytics verilerinin toplanmasını ve kullanımını kontrol edebilir, Bu işlem, içerik haritası günlüklerini dolduran verileri içerir.
Kayıt raporlamayı etkinleştir
Varsayılan olarak Crashlytics, tüm mobil cihazlarınız için kilitlenme raporlarını kullanıcılara ulaşabiliyoruz. Kullanıcılara gönderdikleri veriler üzerinde daha fazla kontrol sahibi olma imkanı tanımak için otomatik raporlamayı devre dışı bırakarak ve yalnızca kodunuzda Crashlytics'ye veri göndermeyi seçtiğinizde etkinleştirerek etkinleştirmeyi etkinleştirebilirsiniz:
Otomatik toplamayı yerel olarak devre dışı bırakın:
Apple platformları
Info.plist
dosyanıza yeni bir anahtar ekleyin:- Anahtar:
FirebaseCrashlyticsCollectionEnabled
- Değer:
false
Android
AndroidManifest.xml
dosyanızınapplication
bloğuna otomatik toplamayı devre dışı bırakmak için birmeta-data
etiketi:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
- Anahtar:
Çalışma zamanında Crashlytics veri toplama geçersiz kılma işlevini çağırarak belirli kullanıcılar için toplamayı etkinleştirin.
Geçersiz kılma değeri, uygulamanızın lansmanları boyunca da devam ettiği için Crashlytics 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.FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
Crash Insights verilerini yönetme
Crash Insights, anonimleştirilmiş yığınınızı karşılaştırarak sorunları çözmenize yardımcı olur diğer Firebase uygulamalarından gelen izleri izler ve sorununuzun büyük bir trendin parçası haline geldi. Crash Insights, sorunların çoğu için kaynak bile sağlar kilitlenmede hata ayıklamanıza yardımcı olur.
Kilitlenme Analizleri, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemezseniz Crash Insights'ı devre dışı bırakabilirsiniz Crashlytics sorun listenizin üst kısmındaki Kilitlenme Analizleri menüsünden Firebase konsolunda bulabilirsiniz.