[선 반성]
Firebase Crashlytics 는 실시간으로 내가 에러를 확인할 수 있게 해주는 툴이다. 지능적으로 크래쉬를 묶어주고 그 문제가 난 상황을 강조해서 개발자의 트러블슈팅 시간을 줄여준다.
마일스톤에 맞춰 앱 런칭이 제 1의 목표였던 시기를 지나 서비스를 고도화하기 위해 도입을 시작한다. 이제야 적용하게 되는 것을 반성한다.
이번 글은 도입 자체가 주이고(그래서 이론/학습 카테고리) 활용도 (실전/회고 카테고리에) 앞으로 쓸 예정이다.
[시작해보기]
시작하려면 먼저 Firebase 에 Crashlytics 를 사용하려는 안드로이드 프로젝트를 등록해야한다.등록이 되어있음을 전제한다.그럼
위 링크의 설명을 쭉 따라가며 SDK 설치와 테스트를 진행하였다. gradle 에 몇 개 추가하고 sync 하는 간단한 과정이니 링크로 대체한다.
이제 원래 SDK 설치하라고 안내하던 페이지에서 앱이 감지되었다고 한다.
이제 강제로 비정상 종료를 일으켜 제대로 보고가 되는지 테스트해보면 된다.
이번 경우는 이미 출시까지 하고나서야 Crashlytics 를 도입하는 거라 기능도입 브랜치에서 따로 테스트를 진행하였다. (로그인 화면에 버튼하나 생성)
실행해서 버튼을 클릭하면 Crashlytics 콘솔이 아래 사진과 같이 바뀐다. (안 바뀐다면 다시 실행해보거나 위 공식문서 링크를 타고 들어가 abd shell ~ 부분을 확인한다.)
위 사진의 동그라미를 클릭해보면 아래 사진처럼 자세한 내용을 확인할 수 있다. 상당히 자세해서 놀랐다.
Crashlytics 가 설치된 상태에서 Analytics 를 함께 사용하면 시너지가 좋다.
더 세부적으로 crash 를 쫓을 수 있고 crash 이전까지의 구체적인 이벤트들을 추적할 수도 있다. 그리고 앱에 대한 주요 측정항복을 시각화할 수 있는 BigQuery 를 생산하는데 도움을 주는 기능을 사용할 수 있게된다.
(BigQuery SQL 은 다음을 참고, https://firebase.google.com/docs/crashlytics/bigquery-export)
나는 Analytics 는 프로젝트 등록할 때 같이 추가했다. 추가하지 않았다면 아래링크를 참고해서 추가할 수 있다.
[Crashyltics 보고 커스터마이징 (+ 앞으로 계획)]
위 사진에서 키, 로그를 발견했다면 crash 보고를 입맛에 맞게 추가 정보를 얻을 수 있음을 예상할 수 있다.
아래 링크에서는 그것과 관련된 내용을 다룬다.
아래 네 가지 메커니즘을 제공한다.
- custom keys
- custom logs
- identifiers
- caught exceptions
그 중에서 내가 먼저 적용하고 다음 글로 써볼 기능은 custom keys 와 caught exception 이다.
custom keys 는 특정 Fragment 와 그 Fragment 가 가지고 있는 비정상 종료 전에 최근 상태값을 저장해서 확인하면 좋을 것 같다. 심지어 그 상태값으로 필터링해서 비슷한 상황에서의 에러를 찾는다면 더 유용할 것 같다.
caught excetption 은 현재 프로젝트에서 HttpException 에 대한 확장함수를 사용하고 있는데 그 부분에 아래 Firebase.crashlytics.recordException 한 줄 추가해서 모든 HttpException 을 보고받아서 통신 상태를 확인해야겠다.
특히 오프라인일 때의 (즉 모바일기기가 Wifi 든, 데이터든 모든 인터넷통신을 꺼놓았을 때의) 처리(ex. 인터넷 연결 안돼도 최근 메시지 보여주기) 를 하려하는데, 오프라인 여부와 함께 오프라인 처리가 잘 되었는지 확인할 수 있어서 유용할 것 같다.
추가로 proguard 난독화와 함께 쓰는 법이나 velocity alerts 적용도 경험해봐야겠다.
(계획 실천글 링크 추가 예정)
'Android > 이론 학습' 카테고리의 다른 글
[Android/Compose] Composable 에서 Runtime permission 요청하기 (0) | 2022.12.27 |
---|---|
[Android/GraphQL] Apollo Kotlin (시작 ~ 쿼리실행) (0) | 2022.03.08 |
[Kotlin/백준] 5430, AC (시간초과 해결) (0) | 2022.02.27 |
[Android] WorkManager 로 복잡한 백그라운드 작업을 쉽게 해결한다고? (기본 사용법과 예시코드 포함) (0) | 2022.02.23 |
[Android] Service 의 타입과 사용법 그리고 권장사항 (0) | 2022.02.23 |