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

Firebase Crashlytics 시작하기

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

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

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

시작하기 전에

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

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

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

    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. 테스트 예외를 강제로 발생시키는 데 사용할 수 있는 코드를 앱에 추가합니다.

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

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

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

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

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

  4. Firebase 콘솔의 Crashlytics 대시보드 로 이동하여 테스트 비정상 종료를 확인하세요.

    콘솔을 새로 고쳤는데도 5분 후에도 테스트 충돌이 표시되지 않으면 디버그 로깅을 활성화 하여 앱이 충돌 보고서를 보내고 있는지 확인하십시오.


그리고 그게 다야! Crashlytics는 이제 앱의 비정상 종료, Android에서는 치명적이지 않은 오류 및 ANR을 모니터링합니다. 모든 보고서와 통계를 보고 조사하려면 Crashlytics 대시보드 를 방문하세요.

다음 단계