This quickstart describes how to set up Firebase Crashlytics in your app with the Crashlytics Flutter plugin so that you can get comprehensive crash reports in the Firebase console.
Настройка Crashlytics включает использование как командной строки, так и вашей IDE. Для завершения настройки вам потребуется принудительно сгенерировать тестовое исключение для отправки первого отчёта о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : для автоматического получения журналов хлебных крошек для понимания действий пользователя, приводящих к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в вашем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта.
> Настройки проекта в консоли Firebase . Если вы создаете новый проект Firebase, включите Google Analytics во время процесса создания проекта.
Обратите внимание, что журналы навигации доступны для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме watchOS).
Шаг 1 : Добавьте Crashlytics в свой проект Flutter
Из корня вашего проекта Flutter выполните следующую команду, чтобы установить плагин Flutter для Crashlytics .
To take advantage of breadcrumb logs , also add the Flutter plugin for Google Analytics to your app. Make sure that Google Analytics is enabled in your Firebase project.
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsИз корневого каталога вашего проекта Flutter выполните следующую команду:
flutterfire configureВыполнение этой команды гарантирует, что конфигурация Firebase вашего приложения Flutter актуальна, а для Android добавляет в ваше приложение требуемый плагин Crashlytics Gradle.
После завершения пересоберите свой проект Flutter:
flutter run(Необязательно) Если в вашем проекте Flutter используется флаг
--split-debug-info(и, при необходимости, также флаг--obfuscate), для отображения читаемых трассировок стека для ваших приложений требуются дополнительные шаги.Платформы Apple: убедитесь, что ваш проект использует рекомендуемую конфигурацию версии (Flutter 3.12.0+ и плагин Flutter Crashlytics 3.3.4+), чтобы ваш проект мог автоматически генерировать и загружать символы Flutter (файлы dSYM) в Crashlytics .
Android: Use the Firebase CLI (v.11.9.0+) to upload Flutter debug symbols. You need to upload the debug symbols before reporting a crash from an obfuscated code build.
Из корневого каталога вашего проекта Flutter выполните следующую команду:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : идентификатор вашего приложения Firebase Android (не имя вашего пакета)
Пример идентификатора приложения Firebase для Android:1:567383003300:android:17104a2ced0c9b9bВот два способа найти идентификатор приложения Firebase:
В файле
google-services.jsonваш идентификатор приложения — это значениеmobilesdk_app_id; илиIn the Firebase console, go to your Project settings . Scroll down to the Your apps card, then click on the desired Firebase App to find its App ID.
PATH/TO /symbols: тот же каталог, который вы передаете флагу--split-debug-infoпри сборке приложения.
Шаг 2 : Настройка обработчиков сбоев
Вы можете автоматически перехватывать все ошибки, возникающие в среде Flutter, переопределив FlutterError.onError с помощью FirebaseCrashlytics.instance.recordFlutterFatalError :
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Pass all uncaught "fatal" errors from the framework to Crashlytics
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
runApp(MyApp());
}
Чтобы перехватывать асинхронные ошибки, которые не обрабатываются фреймворком Flutter, используйте PlatformDispatcher.instance.onError :
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());
}
For examples of how to handle other types of errors, see Customize crash reports .
Шаг 3 : принудительное выполнение тестового сбоя для завершения настройки
Чтобы завершить настройку Crashlytics и увидеть начальные данные на панели управления Crashlytics консоли Firebase , необходимо принудительно вызвать тестовое исключение.
Добавьте в свое приложение код, который можно использовать для принудительного вызова тестового исключения.
Если вы добавили обработчик ошибок, который вызывает
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)вZoneверхнего уровня, вы можете использовать следующий код, чтобы добавить в свое приложение кнопку, при нажатии которой будет выдаваться тестовое исключение:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),Создайте и запустите свое приложение.
Принудительно вызовите тестовое исключение, чтобы отправить первый отчет вашего приложения:
Откройте приложение на тестовом устройстве или эмуляторе.
В вашем приложении нажмите кнопку тестового исключения, которую вы добавили с помощью кода выше.
Перейдите на панель управления Crashlytics консоли Firebase , чтобы увидеть краш вашего теста.
If you've refreshed the console and you're still not seeing the test crash after five minutes, enable debug logging to see if your app is sending crash reports.
Вот и всё! Crashlytics теперь отслеживает сбои вашего приложения, а также нефатальные ошибки и ошибки ANR на Android. Посетите панель управления Crashlytics , чтобы просмотреть и проанализировать все ваши отчёты и статистику.
Следующие шаги
Настройте параметры отчетов о сбоях , добавив отчеты по желанию, журналы, ключи и отслеживание дополнительных нефатальных ошибок.
Интеграция с Google Play позволит вам фильтровать отчёты о сбоях вашего Android-приложения по треку Google Play прямо на панели управления Crashlytics . Это позволит вам лучше сфокусировать панель управления на конкретных сборках.
Просматривайте трассировки стека и статистику сбоев вместе с кодом с помощью окна App Quality Insights в Android Studio (доступно начиная с Electric Eel 2022.1.1).