[flutter] Firebase_core를 사용하여 플러터 앱에서 Crashlytics 활용하기

Firebase는 Google에서 제공하는 모바일 개발 플랫폼입니다. Firebase는 다양한 기능을 제공하며, 이 중 Crashlytics는 앱의 크래시 리포팅과 분석을 제공하는 도구입니다. 이 글에서는 플러터(Flutter) 앱에서 Firebase_core를 사용하여 Crashlytics를 활용하는 방법을 소개하겠습니다.

전제 조건

Firebase_core 패키지 추가

먼저, firebase_core 패키지를 추가해야 합니다. 이 패키지는 Firebase를 플러터 앱에서 사용하기 위해 필요한 핵심 패키지입니다. pubspec.yaml 파일에서 dependencies 섹션에 firebase_core 패키지를 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^1.0.3

pubspec.yaml 파일을 수정한 후, 터미널에서 flutter pub get 명령을 실행하여 패키지를 설치해주세요.

Firebase 초기화

이제 Firebase_core를 사용하여 Firebase를 초기화해야 합니다. 이는 앱이 실행될 때 한 번만 수행하면 됩니다. Firebase를 초기화하는 코드는 main.dart 파일에 추가해주세요.

import 'package:firebase_core/firebase_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

Firebase를 초기화하려면 Firebase.initializeApp() 함수를 호출해야 합니다. await 키워드는 비동기 함수로, Firebase 초기화가 완료될 때까지 앱이 대기하도록 합니다.

Crashlytics 설정

Firebase의 Crashlytics를 사용하기 위해서는 firebase_crashlytics 패키지도 추가해야 합니다. pubspec.yaml 파일에서 dependencies 섹션에 firebase_crashlytics 패키지를 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^1.0.3
  firebase_crashlytics: ^2.1.1

패키지를 추가한 후, 터미널에서 flutter pub get 명령을 실행하여 패키지를 설치해주세요.

앱에 Crashlytics 초기화

Crashlytics를 사용하기 위해서는 앱에서 Crashlytics를 초기화해야 합니다. 일반적으로 앱이 초기화될 때 수행하면 됩니다. main.dart 파일에서 Firebase 초기화 코드 바로 다음에 Crashlytics 초기화 코드를 추가해주세요.

import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kDebugMode);
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
  runApp(MyApp());
}

setCrashlyticsCollectionEnabled() 함수를 사용하여 개발 중에는 디버그 모드에서는 Crashlytics 수집을 비활성화할 수 있습니다. recordFlutterError 함수는 Flutter의 에러를 Crashlytics에 기록해줍니다.

앱에서 Crashlytics 사용

이제 앱에서 Crashlytics를 사용할 준비가 되었습니다. Crashlytics에서는 특정 이벤트가 발생했을 때 로그를 기록하고, 예외를 기록하고, 사용자 지정 키와 값 데이터를 기록하는 등의 기능을 제공합니다.

import 'package:firebase_crashlytics/firebase_crashlytics.dart';

void myFunction() {
  try {
    // 코드 실행 중에 예외가 발생할 수 있는 부분
  } catch (e, stackTrace) {
    FirebaseCrashlytics.instance.recordError(e, stackTrace);
  }
  
  FirebaseCrashlytics.instance.log('myFunction called');
  FirebaseCrashlytics.instance.setCustomKey('myCustomKey', 'myCustomValue');
}

위의 예제에서는 myFunction()이라는 함수에서 예외가 발생할 수 있는 부분을 try-catch 문으로 감싸고, recordError() 함수를 사용하여 발생한 예외를 Crashlytics에 기록합니다. log() 함수는 중요한 이벤트를 로그로 기록하고, setCustomKey() 함수는 사용자 지정 데이터를 기록할 수 있습니다.

결론

이제 Firebase_core를 사용하여 플러터(Flutter) 앱에서 Crashlytics를 활용하는 방법을 알아보았습니다. Firebase의 다양한 기능을 활용하여 앱의 성능 모니터링과 크래시 리포팅을 간편하게 수행할 수 있습니다.