[TIL] Day 47 크래시리틱스 & 애널리틱스

현서·2026년 1월 29일

[TIL] Flutter 9기

목록 보기
59/65
post-thumbnail

📝 ChatBot App 만들기 - 크래시리틱스

✏️ 크래시리틱스란?

Crashlytics
Firebase에서 제공하는 실시간 오류/크래시 리포팅 도구
앱에서 발생하는 치명적인 오류(crash) 및 비정상 종료를 자동 수집
에러 발생 시점의 스택 트레이스, 디바이스 정보, OS 버전 등을 Firebase 콘솔에서 확인 가능
배포 이후(운영 환경) 에서 발생하는 오류를 추적하는 데 필수

사용자가 실제로 앱을 쓰다가 겪는 문제를 개발자가 확인할 수 있게 해주는 도구

✏️ Flutter + Crashlytics 연동 흐름 요약

  1. Firebase 프로젝트 생성
  2. Flutter 프로젝트에 Firebase 연결
  3. Crashlytics 패키지 추가
  4. 전역 에러 핸들링 설정
  5. 크래시 테스트

✏️ Firebase 프로젝트 생성

  • Firebase 콘솔에서 새 프로젝트 생성
  • 프로젝트 이름 입력
  • Google Analytics 활성화
  • 프로젝트 생성 완료

✏️ Flutter 프로젝트 Firebase 세팅

Firebase CLI 설치 (미설치 시)

https://firebase.google.com/docs/cli?hl=ko

firebase login
flutter pub global activate flutterfire_cli

FlutterFire 설정

flutterfire configure
  • Firebase 프로젝트 선택
  • 플랫폼 선택: android, ios
  • 앱 패키지명 입력

필수 패키지 추가

flutter pub add firebase_core
flutter pub add firebase_crashlytics

Firebase 초기화 (main.dart)

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const ProviderScope(child: MyApp()));
}

✏️ Crashlytics 설정

flutterfire 재실행

flutterfire configure
  • Android Crashlytics Gradle 플러그인 자동 추가됨

iOS 설정

ios/Podfile

platform :ios, '15.0'

✏️ 전역 에러 핸들링 설정

Future<void> main() async {
  runZonedGuarded(
    () async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
      );

      // Flutter 프레임워크 내부 에러
      FlutterError.onError = (errorDetails) {
        FirebaseCrashlytics.instance
            .recordFlutterFatalError(errorDetails);
      };

      runApp(const ProviderScope(child: MyApp()));
    },
    (error, stack) {
      // Dart Exception
      FirebaseCrashlytics.instance.recordError(
        error,
        stack,
        fatal: true,
      );
    },
  );
}

역할 정리

  • FlutterError.onError
    Flutter 프레임워크 내부 오류 수집

  • runZonedGuarded
    비동기 영역에서 발생하는 예외(Exception) 수집

✏️ 크래시 테스트

강제 크래시 발생

FirebaseCrashlytics.instance.crash();

강제 Exception 테스트

throw Exception('Test Crash');

✏️ 주의 사항

  • iOS 14 이상

디버그 모드에서 Crashlytics 리포트 제한됨
테스트는 Android 디바이스/에뮬레이터 권장

✏️ 정리

Crashlytics는 배포 이후 실제 사용자 환경에서 발생하는 크래시와 에러를 추적하기 위한 필수 도구
Flutter에서는 전역 에러 핸들링 설정을 통해 안정적으로 연동할 수 있음


📝 ChatBot App 만들기 - 애널리틱스

✏️ 애널리틱스란?

Analytics
Firebase에서 제공하는 사용자 행동 분석 도구
앱 사용 중 발생하는 다양한 행동 데이터를 수집/분석

  • 버튼 클릭
  • 화면 이동
  • 특정 기능 사용 여부

수집된 데이터를 기반으로 UI/UX 개선 포인트 도출 가능

사용자가 앱에서 "무엇을, 어떻게" 사용하는지 수치로 확인하는 도구

✏️ Analytics를 사용하는 이유

  • 사용자가 많이 쓰는 기능 / 거의 안 쓰는 기능 파악
  • 이탈 지점 확인 (어디서 앱을 나가는지)
  • UI/UX 개선 근거 확보
  • 단순 추측이 아닌 데이터 기반 의사결정 가능

✏️ Flutter + Analytics 연동

공식 문서

https://firebase.google.com/docs/analytics/get-started?platform=flutter&hl=ko

패키지 추가

flutter pub add firebase_analytics

firebase_core 는 이미 연동되어 있어야 함

✏️ 이벤트 로깅

기본 개념

Event 이름 + 파라미터(Map) 형태로 전송
Firebase 콘솔에서 이벤트별 통계 확인 가능

버튼 이벤트 예시

FirebaseAnalytics.instance.logEvent(
  name: 'HOME_PAGE_SEND_EVENT',
  parameters: {
    'content': value,
  },
);
  • name : 이벤트 이름 (대문자 + 스네이크 케이스 권장)
  • parameters : 이벤트와 함께 보낼 추가 데이터

✏️ Android에서 Analytics 실시간 테스트

Analytics 이벤트는 기본적으로 약 1시간 단위로 묶어서 업로드
→ 실시간 확인을 위해 DebugView 사용

✏️ DebugView 사용 (Android)

6-1. ADB란?

  • ADB (Android Debug Bridge)
  • 안드로이드 기기/에뮬레이터와 통신하는 커맨드라인 도구

6-2. ADB 환경변수 설정

Windows

C:\Users\본인계정명\AppData\Local\Android\sdk\platform-tools

환경변수 PATH에 추가

Mac

  1. build-tools 버전 확인
ls ~/Library/Android/sdk/build-tools
  1. 환경변수 설정
export ANDROID_HOME=/Users/사용자명/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/build-tools/34.0.0
  1. 설정 파일 수정
nano ~/.zshrc
  • 파일 맨 아래에 추가
  • Ctrl + XY → Enter
  1. 적용
source ~/.zshrc

✏️ Analytics 디버그 모드 활성화

  1. Android 에뮬레이터 또는 실제 기기 실행
  2. 터미널에서 실행
adb shell setprop debug.firebase.analytics.app <패키지명>

예시:

adb shell setprop debug.firebase.analytics.app com.sparta.chatbot

✏️ Firebase 콘솔 확인

  • Firebase Console → Analytics → DebugView
  • 이벤트가 실시간으로 표시됨

✏️ 디버그 모드 해제

adb shell setprop debug.firebase.analytics.app .none.

디버그 모드를 켜둔 채로 사용하면 실제 Analytics 데이터가 왜곡될 수 있음

✏️ 정리

Firebase Analytics는 사용자의 행동 데이터를 수집·분석하여 UI/UX를 데이터 기반으로 개선할 수 있게 해주는 필수 도구이며, DebugView를 통해 개발 중 실시간 검증이 가능하다.


0개의 댓글