CrashLytics는 앱이 Crash가 났을경우에 알림을 주는 역할을 해 줍니다.
마켓에 앱을 출시했다면, 필수로 사용해야 한다고 할 수 있는데요.
Crash를 알려주는 주 기능이외에도, 다양한 기능들이 있지만,
그중에서도 catch한 Exception에 대해서도 알림을 받는 것이 특히 유용합니다.
오늘은 이 방법에 대해서 정리해 보겠습니다.
만약 Firebase내에 현재 앱의 project가 생성되어 있지 않다면,
먼저 아래 링크를 참조해서 프로젝트를 생성해 주세요.
(https://firebase.google.com/docs/android/setup)
1. CrashLytics 라이브러리 implementation
1-1. project level의 build.gradle
먼저 project 레벨 build.gradle에서 다음과 같이 crashlytics 를 추가해 주고요.
만약, 기존에 google-services가 없다면 이것도 추가해 줍니다.
dependencies {
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
}
1-2. app level의 build.gradle
App레벨의 build.gradle의 plugins에도 아래와 같이,
crashlytics를 추가해 줍니다.
이 때, google-services가 없다면 같이 추가해 줍니다.
plugins {
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
}
광고
이제 하단의 dependencies에 crashlytics를 아래와 같이 추가해 주면 됩니다.
depedencies {
implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
implementation 'com.google.firebase:firebase-crashlytics-ktx:18.3.2'
}
이제 라이브러리를 사용할 준비가 다 되었습니다.
2. Exception Catch하기
테스트를 위해서, 임의의 TryException을 정의하구요
버튼에서, onClick시에 위에서 만든 TryException을 throw해주겠습니다.
catch에서 이 Exception을 잡아 주었으므로,
앱은 crash를 일으키지 않을 것 입니다.
아래와 같이 Crash없이 catch에서 구현한 대로, 토스트 메시지를 보여주고 crash를 일으키지 않습니다.
앱이 Crash가 나지는 않았지만, 개발자는 어떤 상황인지 알고 있어야 겠지요.
2. Catch한 Exception 로그 받기
아래 한줄의 코드면 CrashLytics로 부터 “non-fatal” issue로 알림을 받을 수 있습니다.
예전버전에서는 "Crashlytics.logException(e)"을 사용하였는데,
최근에는 API사용법이 바귀었습니다.
한가지 주의해야 할 점은,
아래 이미지에서 선택한 것과 같이,
CrashLytics의 대쉬보드에서 non-fatals(심각하지 않음)을 필터링해서 제외하지 않거나,
모든 종류의 이벤트 유형을 다 볼 수 있도록 선택해 주어야 한다는 것 입니다.
또한 내부적으로 CrashLytics는 해당 로그 정보를 모아서 서버로 전송하기 때문에,
실시간이 아닐 수 있다는 점도 고려해야 합니다.
3. Custom 로그 받기
3-1. Custom 로그받기
CrashLytics를 통해서 Custom한 로그를 받을 수 있는데요.
아래와 같이 log함수를 사용해 주면 됩니다.
광고
3-2. 키밸류값으로 로그 받기
아래와 같이 키밸류값으로 받아올 수도 있습니다.
4. 유저 Log받기
아래와 같이 CrashReport에 유저명을 설정해 줄수도 있습니다.
로그마다 설정할 필요없이 Application.class에서 설정해주면 리포트에 유저관련정보가 추가되겠습니다.
그럼 나중에 Crashlytics리포트에서 해당 유저에게 발생한 Exception들을 모아서 볼 수 있구요.
그것이 어떤 특정한 액션에 의한 것인지, 로그를 통해서 유추할수도 있을 것 입니다.
이외에도 CrashLytics를 사용해보면 정말 유용한 점들이 많은데요.
네트워크와 관련해서 catch한 Exception 같은 경우, 유용한 정보를 놓치지 않고 얻을 수 있어서 더욱 좋습니다.
'Android 개발 > Debug, ADB, CrashLytics, LogCat' 카테고리의 다른 글
GeneratedInjector could not be resolved 에러 대응 방법 # package name (0) | 2023.04.15 |
---|---|
ktlint 린트툴 적용하는 방법 정리 # Android Lint (1) | 2023.03.15 |
Android Studio Java Runtime Version 에러 발생시 대응 방법 # Gradle (0) | 2022.12.10 |
자주 사용하는 ADB 명령어 정리 # logcat (0) | 2021.03.09 |
Kotlin Exception 처리 방법 # RunCatching 과 try, catch (1) | 2020.02.13 |
WindowManager$BadTokenException 대응하기 (0) | 2020.02.06 |
Android 디버깅 방법 및 Tip에 대한 정리 (0) | 2020.01.29 |
Kotlin에서 try catch finally로 처리하는 Exception (0) | 2020.01.28 |
ArrayIndexOutOfBoundsException과 ViewHolder의 getAdapterPosition사용 (0) | 2019.10.18 |
RxJava2의 Global Error Handler 대응 #UndeliverableException (1) | 2019.10.16 |
댓글