Android/이론 학습

[Android/Firebase] 기존 프로젝트에 Crashlystics 적용하기

노소래 2022. 3. 6. 15:59

[선 반성]

Firebase Crashlytics 는 실시간으로 내가 에러를 확인할 수 있게 해주는 툴이다. 지능적으로 크래쉬를 묶어주고 그 문제가 난 상황을 강조해서 개발자의 트러블슈팅 시간을 줄여준다. 

마일스톤에 맞춰 앱 런칭이 제 1의 목표였던 시기를 지나 서비스를 고도화하기 위해 도입을 시작한다. 이제야 적용하게 되는 것을 반성한다.

이번 글은 도입 자체가 주이고(그래서 이론/학습 카테고리) 활용도 (실전/회고 카테고리에) 앞으로 쓸 예정이다.

 

[시작해보기]

시작하려면 먼저 Firebase 에 Crashlytics 를 사용하려는 안드로이드 프로젝트를 등록해야한다.등록이 되어있음을 전제한다.그럼 

Firebase 프로젝트로 이미 등록되어있는 Blind Cafe

 

Firebase Crashlytics 시작하기  |  Firebase Documentation

Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 Firebase Crashlytics 시작하기 iOS+ Android Unity 이 빠른 시작에서는 Firebase Crashlytics SDK를 사용해 앱에 Firebase Crashlytics를 설정하여 Firebase Con

firebase.google.com

위 링크의 설명을 쭉 따라가며 SDK 설치와 테스트를 진행하였다. gradle 에 몇 개 추가하고 sync 하는 간단한 과정이니 링크로 대체한다.

 

이제 원래 SDK 설치하라고 안내하던 페이지에서 앱이 감지되었다고 한다.

SDK 설치 이후 Crashlytics 콘솔

이제 강제로 비정상 종료를 일으켜 제대로 보고가 되는지 테스트해보면 된다.

이번 경우는 이미 출시까지 하고나서야 Crashlytics 를 도입하는 거라 기능도입 브랜치에서 따로 테스트를 진행하였다. (로그인 화면에 버튼하나 생성)

강제 비정상종료 테스트

실행해서 버튼을 클릭하면 Crashlytics 콘솔이 아래 사진과 같이 바뀐다. (안 바뀐다면 다시 실행해보거나 위 공식문서 링크를 타고 들어가 abd shell ~ 부분을 확인한다.)

위 사진의 동그라미를 클릭해보면 아래 사진처럼 자세한 내용을 확인할 수 있다. 상당히 자세해서 놀랐다. 

구체적인 에러사항

Crashlytics 가 설치된 상태에서 Analytics 를 함께 사용하면 시너지가 좋다.

더 세부적으로 crash 를 쫓을 수 있고 crash 이전까지의 구체적인 이벤트들을 추적할 수도 있다. 그리고 앱에 대한 주요 측정항복을 시각화할 수 있는 BigQuery 를 생산하는데 도움을 주는 기능을 사용할 수 있게된다.

(BigQuery SQL 은 다음을 참고, https://firebase.google.com/docs/crashlytics/bigquery-export) 

나는 Analytics 는 프로젝트 등록할 때 같이 추가했다. 추가하지 않았다면 아래링크를 참고해서 추가할 수 있다.

 

Google 애널리틱스를 사용하여 비정상 종료 보고서 측정항목 가져오기  |  Firebase Documentation

Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 Google 애널리틱스를 사용하여 비정상 종료 보고서 측정항목 가져오기 iOS+ Android Google 애널리틱스는 Firebase의 분석 엔진입니다. 앱에

firebase.google.com

 

[Crashyltics 보고 커스터마이징 (+ 앞으로 계획)]

위 사진에서 키, 로그를 발견했다면 crash 보고를 입맛에 맞게 추가 정보를 얻을 수 있음을 예상할 수 있다. 

아래 링크에서는 그것과 관련된 내용을 다룬다.

 

Firebase Crashlytics 비정상 종료 보고서 맞춤설정  |  Firebase Documentation

Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 Firebase Crashlytics 비정상 종료 보고서 맞춤설정 iOS+ Android Unity 이 가이드에서는 Firebase Crashlytics SDK를 사용하여 비정상 종료 보고서를

firebase.google.com

아래 네 가지 메커니즘을 제공한다.

  1. custom keys
  2. custom logs
  3. identifiers
  4. caught exceptions

그 중에서 내가 먼저 적용하고 다음 글로 써볼 기능은 custom keys 와 caught exception 이다. 

 

custom keys 는 특정 Fragment 와 그 Fragment 가 가지고 있는 비정상 종료 전에 최근 상태값을 저장해서 확인하면 좋을 것 같다. 심지어 그 상태값으로 필터링해서 비슷한 상황에서의 에러를 찾는다면 더 유용할 것 같다.

 

caught excetption 은 현재 프로젝트에서 HttpException 에 대한 확장함수를 사용하고 있는데 그 부분에 아래 Firebase.crashlytics.recordException 한 줄 추가해서 모든 HttpException 을 보고받아서 통신 상태를 확인해야겠다. 

특히 오프라인일 때의 (즉 모바일기기가 Wifi 든, 데이터든 모든 인터넷통신을 꺼놓았을 때의) 처리(ex. 인터넷 연결 안돼도 최근 메시지 보여주기) 를 하려하는데, 오프라인 여부와 함께 오프라인 처리가 잘 되었는지 확인할 수 있어서 유용할 것 같다.

추가로 proguard 난독화와 함께 쓰는 법이나 velocity alerts 적용도 경험해봐야겠다.

 

 

(계획 실천글 링크 추가 예정)