Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Firebase Crashlytics 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 빠른 시작에서는 Firebase 콘솔에서 포괄적인 충돌 보고서를 얻을 수 있도록 Crashlytics Flutter 플러그인을 사용하여 앱에서 Firebase Crashlytics를 설정하는 방법을 설명합니다.

Crashlytics를 설정하려면 명령줄 도구와 IDE를 모두 사용해야 합니다. 설정을 완료하려면 첫 번째 충돌 보고서를 Firebase로 보내기 위해 테스트 예외를 강제로 발생시켜야 합니다.

시작하기 전에

  1. 아직 하지 않았다면 Flutter 프로젝트에서 Firebase를 구성하고 초기화 하세요.

  2. 권장 사항 : 비정상 종료 사용자, 이동 경로 로그 및 속도 알림과 같은 기능을 얻으려면 Firebase 프로젝트에서 Google 애널리틱스를 활성화해야 합니다.

    Crashlytics에서 지원하는 모든 Android 및 Apple 플랫폼(watchOS 제외)은 Google Analytics의 이러한 기능을 활용할 수 있습니다.

    Firebase 프로젝트에서 Google 애널리틱스가 활성화되어 있는지 확인합니다. > 프로젝트 설정 > 통합 탭으로 이동한 다음 화면에 표시되는 Google 애널리틱스 지침을 따릅니다.

1단계 : Flutter 프로젝트에 Crashlytics 추가

  1. Flutter 프로젝트의 루트에서 다음 명령을 실행하여 Crashlytics Flutter 플러그인을 설치합니다.

    flutter pub add firebase_crashlytics
    
  2. Flutter 프로젝트의 루트 디렉터리에서 다음 명령을 실행합니다.

    flutterfire configure
    

    이 명령을 실행하면 Flutter 앱의 Firebase 구성이 최신 상태인지 확인하고 Android의 경우 필요한 Crashlytics Gradle 플러그인을 앱에 추가합니다.

  3. 완료되면 Flutter 프로젝트를 다시 빌드하십시오.

    flutter run
    
  4. (선택 사항) Flutter 프로젝트에서 --split-debug-info 플래그 (및 선택적으로 --obfuscate 플래그 )를 사용하는 경우 Firebase CLI (v.11.9.0+)를 사용하여 Android 기호를 업로드해야 합니다.

    Flutter 프로젝트의 루트 디렉터리에서 다음 명령을 실행합니다.

    firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols

    PATH/TO /symbols 디렉토리는 애플리케이션을 빌드할 때 --split-debug-info 플래그에 전달하는 것과 동일한 디렉토리입니다.

2단계 : 충돌 처리기 구성

FirebaseCrashlytics.instance.recordFlutterFatalErrorFlutterError.onError 를 재정의하여 Flutter 프레임워크 내에서 발생하는 모든 오류를 자동으로 잡을 수 있습니다.

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());

}

다른 유형의 오류를 처리하는 방법에 대한 예는 충돌 보고서 사용자 정의 를 참조하십시오.

3단계 : 강제로 테스트 충돌을 일으켜 설정 완료

Crashlytics 설정을 완료하고 Firebase 콘솔의 Crashlytics 대시보드에서 초기 데이터를 보려면 테스트 예외를 강제로 발생시켜야 합니다.

  1. 테스트 예외를 강제로 throw하는 데 사용할 수 있는 코드를 앱에 추가합니다.

    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) 를 호출하는 오류 핸들러를 최상위 Zone 에 추가한 경우 다음 코드를 사용하여 눌렀을 때 발생하는 버튼을 앱에 추가할 수 있습니다. 테스트 예외:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. 앱을 빌드하고 실행합니다.

  3. 앱의 첫 번째 보고서를 보내기 위해 테스트 예외를 강제로 throw합니다.

    1. 테스트 기기 또는 에뮬레이터에서 앱을 엽니다.

    2. 앱에서 위의 코드를 사용하여 추가한 테스트 예외 버튼을 누릅니다.

  4. Firebase 콘솔의 Crashlytics 대시보드 로 이동하여 테스트 충돌을 확인하세요.

    콘솔을 새로고침했는데 5분이 지나도 테스트 충돌이 표시되지 않으면 디버그 로깅을 활성화 하여 앱이 충돌 보고서를 보내는지 확인하세요.


그리고 그게 다야! Crashlytics는 이제 앱에서 충돌이 있는지, Android에서는 치명적이지 않은 오류 및 ANR을 모니터링하고 있습니다. Crashlytics 대시보드 를 방문하여 모든 보고서와 통계를 보고 조사하세요.

다음 단계