NotiLLM_Crashlytics

Aug 5, 2026·
In Hyuk
In Hyuk
· 2 min read
blog

Firebase Crashlytics 연동

목적

앱이 강제 종료되거나 예외가 발생했을 때, 사용자가 로그를 보내지 않아도 Firebase Console에서 비정상 종료 보고서를 확인할 수 있도록 했다.

사전 조건

항목최소 요구본 프로젝트
Gradle8.08.13
Android Gradle Plugin8.1.08.11.1
Google services 플러그인4.4.14.4.2
app/google-services.json필요사용 중

코드 변경 요약

1. 프로젝트 수준 (build.gradle.kts)

  • Crashlytics Gradle 플러그인 추가
    id("com.google.firebase.crashlytics") version "3.0.3" apply false

2. 앱 모듈 (app/build.gradle.kts)

  • google-services.json이 있을 때 플러그인 적용
    • com.google.gms.google-services
    • com.google.firebase.crashlytics
  • Firebase 의존성 추가 (BoM 사용, 버전 미지정)
    • firebase-crashlytics
    • firebase-analytics (탐색경로 로그용)

3. 테스트 비정상 종료 UI

  • 위치: 프로필 화면 (ProfileScreen)
  • debug 빌드에서만 Test Crash 버튼 표시
  • 동작: throw RuntimeException("Test Crash")

검증 절차

  1. Firebase Console → Crashlytics 사용 설정
  2. (권장) 프로젝트 설정 → 통합에서 Google Analytics 사용 설정
  3. 앱 빌드 후 설치·실행
  4. 프로필Test Crash 탭 → 앱 강제 종료
  5. 앱을 다시 실행 (이때 보고서 전송)
  6. Firebase Console → Crashlytics에서 Test Crash 확인
    • 반영까지 수 분 소요될 수 있음

참고

  • Test Crash 버튼은 BuildConfig.DEBUG일 때만 보이므로 release에는 노출되지 않음
  • 확인 완료 후 테스트 버튼 코드는 제거해도 됨
  • Crashlytics는 크래시/ANR 등 비정상 종료용이며, LLM 실패·규칙 생성 실패 등 비즈니스 로그는 Realtime Database 원격 로그로 별도 설계 필요

느낀점

  • 가까운 지인에게 테스트를 부탁하면서 연령층 별로 생각보다 입력하는 메시지의 느낌이 다르다는 것을 느꼈다. “받지마/받아줘” 보다는 “보류"라는 단어를 사용하는 케이스가 있었다. 또한 “카카오톡 메시지"라는 말을 “카카오톡” 앱의 “메시지” 키워드로 잘못 등록하는 케이스도 존재했다. 해당 케이스에 대해서는 어떻게 컨트롤하고 제어 조건으로 설정하기 위해 프롬프팅해줘야 할 지 고민이 필요해 보였다.
In Hyuk
Authors
Data Analyst
데이터AI를 통해 가치를 만드는 것을 좋아합니다.
LLM을 활용한 서비스로 가치를 창출하고 유저 데이터 분석에 관심이 있습니다.