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 etkinliğe yol açan kullanıcı işlemlerini görmenizi sağlar.
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 veya Google Cloud'da
çerçevesine uygun şekilde FlutterError.onError
öğesini geçersiz kılarak
FirebaseCrashlytics.instance.recordFlutterFatalError
. Alternatif olarak, "ölümcül olmayan" istisnaları da yakalamak için FlutterError.onError
değerini FirebaseCrashlytics.instance.recordFlutterError
ile geçersiz kılın:
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);
Yakalanan istisnaları bildirme
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydedersiniz ve bu istisnalar, tekrar etkinlik bildirildiğinde veya uygulama yeniden başlatıldığında geçerli olur.
Uygulamanızın catch bloklarında önemli olmayan istisnaları kaydetmek için recordError
yöntemini kullanın. Örneğin:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
Hatayla ilgili daha fazla bilgiyi de günlüğe kaydetmek isteyebilirsiniz. Bunu information
mülkünü kullanarak yapabilirsiniz:
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. Sorun özetinde, normalde kilitlenmelerden aldığınız tüm durum bilgileriyle birlikte sürüme ve donanım cihazına göre dökümler yer alır.
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. İsteğe bağlı 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 kontrol panelinde, özel bir anahtarla eşleşen sorunları arayabilirsiniz.
Konsolda belirli bir sorunu incelerken her etkinlikle 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. 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
Kilitlenmeye yol açan etkinlikler 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 Crashlytics Günlükler sekmesinde Firebase konsolunda görüntüler.
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ı 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, 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 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. Kullanıcı tanımlayıcısı temizlendiğinde mevcut Crashlytics kayıtları kaldırılmaz. Bir kullanıcı kimliğiyle ilişkili kayıtları silmeniz gerekiyorsa Firebase destek ekibiyle iletişime geçin.
İçerik haritası günlüklerini alma
Kırıntı günlükleri, kullanıcının uygulamanızla yaptığı ve kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan etkileşimleri daha iyi anlamanızı sağlar. Bu günlükler, bir sorunu yeniden oluşturmaya ve hata ayıklama işlemine çalışırken faydalı olabilir.
Kırıntı günlükleri Google Analytics tarafından desteklenir. Bu nedenle, breadcrumb günlüklerini almak için Firebase projeniz için Google Analytics'i etkinleştirmeniz ve Google Analytics için Firebase SDK'sını uygulamanıza eklemeniz gerekir. Bu koşullar karşılandığında, bir sorunun ayrıntılarını görüntülediğinizde breadcrumb günlükleri, Günlükler sekmesindeki bir etkinliğin verilerine otomatik olarak eklenir.
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.
Kırıntı günlükleri, etkinliğin parametre verileri de dahil olmak üzere kullanıcı oturumunda manuel olarak kaydettiğiniz tüm özel etkinliklerle de doldurulur. 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ı.
Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın. Bu veriler arasında, içerik haritası günlüklerini dolduran veriler de bulunur.
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ı doğal olarak devre dışı bırakma:
Apple platformları
Info.plist
dosyanıza yeni bir anahtar ekleyin:- Anahtar:
FirebaseCrashlyticsCollectionEnabled
- Değer:
false
Android
Otomatik toplamayı devre dışı bırakmak için
AndroidManifest.xml
dosyanızınapplication
bloğuna birmeta-data
etiketi ekleyin:<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 başlatıldığı süre boyunca da kalır. Bu nedenle 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.
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 konsolundaki Crashlytics sorun listenizin üst kısmındaki Kilitlenme Analizleri menüsünden Kilitlenme Analizleri'ni devre dışı bırakabilirsiniz.