#flutter #crashlytics
#flutter #crashlytics
Вопрос:
Ниже приведен код, с помощью которого я должен инициализировать запуск своего приложения. В качестве теста у меня есть будущее, которое выдаст исключение (вне диапазона), это как когда-либо не отправлялось в crashlystics?
Если я выдам FirebaseCrashlystics.instance.crash(), он отправит отчет. Я изменил фильтр на Event-type=»non-fatals», но я не вижу там своих ошибок.
Я не знаю, чего мне не хватает?
class AppConfig {
final String appTitle;
final BuildFlavor buildFlavor;
final bool initializeCrashlytics, enableCrashlyticsInDevmode;
AppConfig(
{@required this.appTitle,
@required this.buildFlavor,
this.initializeCrashlytics = true,
this.enableCrashlyticsInDevmode = true});
Future<void> _testAsyncErrorOnInit() async {
Future<void>.delayed(
const Duration(seconds: 2),
() {
final List<int> list = <int>[];
print(list[100]);
},
);
}
Future startCrashlytics() async {
Function originalError = FlutterError.onError;
if (this.initializeCrashlytics) {
await FirebaseCrashlytics.instance
.setCrashlyticsCollectionEnabled(this.enableCrashlyticsInDevmode);
FlutterError.onError = (FlutterErrorDetails errorDetails) async {
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
originalError(errorDetails);
};
FirebaseCrashlytics.instance.crash(); << This works
// await _testAsyncErrorOnInit(); << This doesn't Yes i do comment crash and uncomment this.
}
}
Future run() async {
// Lägg in initiering av firebase, crashlytics
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await startCrashlytics();
runApp(ElectronicCupongs(appTitle: appTitle));
}
}
Ответ №1:
Я вижу, вы проверили пример пакета, но ваше приложение завернуто в runZonedGuarded
?
Страница примера содержит необходимые сведения, но вы также можете проверить файлы пакета или, более читаемый формат, FlutterFire .
Комментарии:
1. Привет! Это работает для внешнего кода, но затем в других сегментах кода я пробовал это, но тоже не сработало. Должен ли я вручную регистрировать исключения в блоке Try Catch? Я думал, что это было обработано при общей ошибке, но, возможно, исключения не нужно улавливать и сообщать об ошибках crashlystics? Я заметил, что сбои и не серьезные сбои, например, когда я получаю красный экран с отображением ошибки, это регистрируется. Надеюсь, вы понимаете 🙂
2. @Martin, извините, что я не ответил раньше, но кто-то другой управлял этим сегментом. Насколько я понимаю, вам нужно перехватывать ошибки для crashlytics. Вот фрагмент из a
catch (error, stackTrace)
:await FirebaseCrashlytics.instance.recordError(error, stackTrace, reason: reasonForCrash);
. Я постараюсь вернуться с дополнительной информацией, как только закончу!