Firebase 출시 및 모니터링 기능 중 Firebase Crashlytics 를 사용하면 비정상 종료, 심각하지 않은 오류, '애플리케이션 응답 없음'(ANR) 오류에 관한 포괄적인 비정상 종료 보고서를 받아 볼 수 있습니다.
앱 Crash 를 좀 더 손쉽게 확인할 수 있는 오류보고 솔루션입니다.
🚨 Google Crashlytics 에 대한 사용설정
Firebase Crashlytics 를 사용하기 위해 먼저 Google Crashlytics 에 대한 사용설정을 구성해 줍니다.
프로젝트 개요 > 프로젝트 설정 > Google Crashlytics 사용설정 클릭 후
Google 애널리틱스 계정 선택 후 Google Crashlytics 사용 설정 버튼 클릭
🚨 Firebase Crashlytics 시작하기
https://firebase.google.com/docs/crashlytics/get-started?platform=android#add-sdk
해당 페이지를 참고하여 시작할 수 있습니다.
1. build.gradle(:app)
◾ 앱에 Firebase Crashlytics SDK 추가 - dependencies 안에 Firebase Crashlytics 에 대한 의존성을 추가해줍니다.
implementation 'com.google.firebase:firebase-crashlytics-ktx' //Firebase Crashlytics SDK 추가
implementation 'com.google.firebase:firebase-analytics-ktx' //Firebase Crashlytics SDK 추가
◾ Crashlytics Gradle 플러그인을 적용해줍니다.
apply plugin: 'com.google.firebase.crashlytics'
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
}
...
dependencies {
...
implementation platform('com.google.firebase:firebase-bom:30.0.1')
implementation 'com.google.firebase:firebase-crashlytics-ktx' //Firebase Crashlytics SDK 추가
implementation 'com.google.firebase:firebase-analytics-ktx' //Firebase Crashlytics SDK 추가
...
}
2. build.gradle
◾ Firebase Crashlytics 플러그인 추가 - Crashlytics Gradle 플러그인을 buildscript 종속 항목으로 추가하여 합니다.
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' //Firebase Crashlytics 플러그인 추가
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.4"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' //Firebase Crashlytics 플러그인 추가
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
3. CrashMainActivity.kt
◾ Firebase Console 의 Crashlytics 대시보드에 데이터를 표시하기 위해 테스트 비정상 종료를 강제로 적용합니다.
throw RuntimeException("Test Crash") // Force a crash
Firebase Crashlytics SDK를 사용하여 비정상 종료 보고서를 맞춤설정하는 방법들이 있습니다.
https://firebase.google.com/docs/crashlytics/customize-crash-reports?authuser=1&platform=android
◾ 커스텀 키
- 커스텀 키 추가하여 비정상 종료로 이어지는 앱의 구체적인 상태를 확인할 수 있습니다.
- 임의의 키-값 쌍을 비정상 종료 보고서에 연결하고 커스텀 키를 사용하여 Firebase Console 에서 비정상 종료 보고서를 검색하고 필터링할 수 있습니다. setCustomKey 인스턴스 메서드를 사용하여 키-값 쌍을 설정합니다.
// 커스텀 키 추가
Firebase.crashlytics.setCustomKeys {
key("my_string_key", "hello") // String value
key("my_bool_key", true) // boolean value
key("my_double_key", 1.0) // double value
key("my_float_key", 1.0f) // float value
key("my_int_key", 2) // int value
}
◾ 커스텀 로그 메시지
- 비정상 종료로 이어지는 이벤트에 대한 정보를 자세히 파악하기 위해 커스텀 Crashlytics 로그를 추가할 수 있습니다.
// 커스텀 로그 메시지 추가
Firebase.crashlytics.log("message!!")
◾ 사용자 식별자 설정
- 보고서에 사용자 ID를 추가하여 어떤 사용자에게 발생했는지 파악하여 진단하는데 도움이 될 수 있습니다.
// 사용자 식별자 설정
Firebase.crashlytics.setUserId("user123456789")
package com.eun.myappkotlin02.crash
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.eun.myappkotlin02.databinding.ActivityMainBinding
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.crashlytics.ktx.setCustomKeys
import com.google.firebase.ktx.Firebase
class CrashMainActivity: AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) //setContentView(R.layout.activity_main)
initView()
}
private fun initView() {
// https://firebase.google.com/docs/crashlytics/get-started?platform=android#add-sdk
binding.btnGoCrash.setOnClickListener {
customizeCrashlytics()
}
}
/* Firebase Crashlytics 비정상 종료 보고서 맞춤설정 메소드 */
private fun customizeCrashlytics() {
// https://firebase.google.com/docs/crashlytics/customize-crash-reports?authuser=1&platform=android
val crashlytics = Firebase.crashlytics
// 커스텀 로그 메시지 추가
crashlytics.log("message!!")
// 커스텀 키 추가
crashlytics.setCustomKeys {
key("my_string_key", "hello") // String value
key("my_bool_key", true) // boolean value
key("my_double_key", 1.0) // double value
key("my_float_key", 1.0f) // float value
key("my_int_key", 2) // int value
}
// 사용자 식별자 설정
crashlytics.setUserId("user123456789")
throw RuntimeException("Test Crash") // Force a crash - 테스트 비정상 종료를 강제로 적용
}
}
GO TEST CRASH 버튼 클릭 시 강제 비정상 종료를 실행하였습니다.
감사합니다 :)
'📱 안드로이드 Android ~ Kotlin' 카테고리의 다른 글
[Android/kotlin] 구글 Firebase Realtime Database 사용한 채팅 앱 만들기 (0) | 2022.06.24 |
---|---|
[Android/kotlin] 구글 Firebase Realtime Database 사용하기 (0) | 2022.06.10 |
[Android/Kotiln] Jetpack Navigation 사용하기 (0) | 2022.05.26 |
[Android/Kotiln] 생체 인식 인증 방식 Biometric 사용하기 (3) | 2022.04.28 |
[Kotlin/코틀린] 5 - 상속과 클래스 종류 (data 클래스, object 클래스, companion 클래스) (1) | 2022.02.04 |