서론
Android 앱을 실제 스토어에 배포한 뒤 유지보수, 즉 해당 서비스가 원활하게 돌아가게끔 하기 위해서 오류에 대한 처리는 필수적입니다. 그런데 막상 앱을 스토어에 배포할 때 보안을 위해 Proguard 등과 같은 툴을 사용하여 난독화를 하는 경우에 구글 콘솔을 통해 에러가 발생한 위치를 찾기는 힘듭니다.
이때, Firebase Crashlytics를 사용하면 해당 앱의 에러를 효과적으로 관리할 수 있습니다.
Firebase Crashlytics
Firebase Crashlytics는 실시간 비정상 종료 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 우선순위를 지정하고 문제를 해결하는데 도움이 됩니다. Crashlytics는 비정상 종료를 지능적으로 그룹화하고 이러한 비정상 종료를 유발하는 상황을 강조하여 보여주므로 문제 해결 시간이 절약됩니다.
주요 기능
기능 | 설명 |
선별된 비정상 종료 보고 | Crashlytics는 다량의 비정상 종료를 처리하기 쉽게 문제 목록으로 통합하여 보여주고, 상황 정보를 제공하고 비정상 종료의 심각도와 발생률을 강조표시하므로 근본 원인을 더욱 빨리 파악할 수 있습니다. |
자주 발생하는 비정상 종료 해결법 | Crashlytics가 제공하는 비정상 종료 통계는 자주 발생하는 안전성 문제를 강조하고, 더욱 쉽게 문제를 파악 및 분류하고 해결하기 위한 리소스를 제공하는 유용한 도움말입니다. |
애널리틱스와 통합 | Crashlytics는 앱의 오류를 애널리틱스의 app_exception 이벤트로 캡처할 수 있습니다. 이벤트는 각 비정상 종료로 이어지는 다른 이벤트 목록에 대한 액세스를 제공하여 디버깅을 단순화하고, 비정상 종료가 발생한 사용자의 애널리틱스 보고서를 가져와 잠재고객 통계를 제공합니다. |
실시간 알림 | 즉각적인 대응이 필요할 수 있는 새로운 문제, 재발된 문제, 증가 중인 문제에 대해 실시간 알림을 받을 수 있습니다. |
구현
1. Firebase Console에 프로젝트 추가
- 프로젝트 추가하는 방법은 이전에 GA 적용 포스팅을 참고해 주세요😊
https://ystech.tistory.com/entry/Android-GA-%EC%A0%81%EC%9A%A9
Android GA 적용
저는 Android 개발을 공부하기 때문에 Google Analytics를 Firebase를 활용하여 앱에 적용시켜보려 합니다. 애널리틱스는 Firebase 전체 기능에 통합되어 Firebase SDK를 사용하여 적용시킬 수 있습니다. 최대 5
ystech.tistory.com
2. Firebase Crashlytics SDK 추가
build.gradle(module)
plugins {
id 'com.android.application'
// Make sure that you have the Google services Gradle plugin
id 'com.google.gms.google-services'
// Add the Crashlytics Gradle plugin
id 'com.google.firebase.crashlytics'
...
}
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:31.4.0')
// Add the dependencies for the Crashlytics and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-analytics-ktx'
}
build.gradle(project)
buildscript {
repositories {
// Make sure that you have the following two repositories
google() // Google's Maven repository
mavenCentral() // Maven Central repository
}
dependencies {
...
classpath 'com.android.tools.build:gradle:7.2.0'
// Make sure that you have the Google services Gradle plugin dependency
classpath 'com.google.gms:google-services:4.3.15'
// Add the dependency for the Crashlytics Gradle plugin
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.4'
}
}
위와 같이 셋팅하게되면 Firebase Crashlytics를 사용할 준비가 마무리된 것입니다.
3. 소스내에 Firebase Crashlytics 셋팅
Firebase Crashlytics 셋팅하는 위치는 다양하지만, 저는 해당 앱의 Application 소스를 만들어 공통으로 자주 사용되는 소스를 정리해 두었습니다. 마찬가지로, Firebase Crashlytics도 Application 소스에 정리해 두었습니다.
Application
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
추가적으로, 저는 제가 DEBUG 모드로 테스트를 할 때 발생한 오류는 보고서를 분석할 때 방해가 될 것이라고 생각하여, 디버그 모드가 아닌 실제 배포 앱에서 발생되는 Crash만 로그를 남기는 방식으로 셋팅하였습니다.
위 방법은 stackoverflow를 참고하면 좋을 것 같습니다😋
https://stackoverflow.com/questions/62402856/new-firebase-crashlytics-disable-in-debug-mode
New Firebase Crashlytics disable in debug mode
I have recently switched to new Firebase Crashlytics from Fabric one and I can't find alternative for disabling Crashlytics in debug mode. Fabric: val crashlytics = Crashlytics.Builder().core(
stackoverflow.com
위 방법으로 적용하여, Test Crash를 발생시키고 Firebase Console의 Crashlytics에서 확인해 보면,
위와 같이 확인할 수 있습니다.
마무리
오늘은 유지보수에 효과적인 도구인 Firebase Crashlytics에 대해 정리해 보고 적용까지 해봤습니다.
실제 앱을 배포하고 내가 아닌 다른 사용자들이 다양한 환경에서 앱을 사용하게 되면 예상하지 못했던 에러들이 많이 발생하더라구요😂
Crashlytics를 활용하여 에러를 분석하고 수정하여 다음 버전 배포 때 함께 반영하면 좋을 것 같습니다.
모두 즐코😋
Reference
Firebase Crashlytics 시작하기
5월 10일, Google I/O에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Firebase Crashlytics 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. iOS+ Android Fl
firebase.google.com