크래쉬 리포트 서비스 사용기

부제: Unity에서 crash 리포트 서비스 연동하기

적당한 crash 리포트 서비스을 찾아보았다.  물론, 무료가 좋다.  하지만, 무료라면 유료보다는 약간의 불편함이나 기능의 부족함을 참아야 할 것이다.  우선, Unity 내부 툴, Apteligent, Visual Studio App Center, Firebase기반의 Crashlytics을 살펴 보았다.  

Unity에서 제공하는 crash 리포팅 기능은 나쁘지는 않다.  무료라는 큰 장점이 있고, 설치나 연동이 간단해서 누구나 쉽게 사용할 수 있다.  Crash가 가장 많이 발생하는 이슈들로 정렬이 가능하고, 단말기 정보도 확인 가능하다.  게임 코어 개발이 우선시 되어야 되는 팀에서는 적극적으로 연동이 필요할 것이다.  하지만 단점도 분명히 존재한다.  검색시에 텍스트 검색이 아닌 필터를 사용하여야 되므로 원하는 텍스트를 이용하여 오류를 검색할 수는 없다.  그리고 유저가 어떠한 작업을 하다가 crash가 발생했는지 log를 확인할 수 없다.  (Unity 2018.3 부터는 로그를 남길 수 있다고 한다.)

Apteligent 같은 경우는 무료로 사용하다가 유료로 전환되어 사용을 못하게 되었는데, 나름 만족도가 높았던 서비스였다.  이 서비스의 경우 연동이 간단하여 (firebase와 비교할때) 설치 및 제거가 어렵지 않았고, 로깅 기능이 강하여 유저가 어디까지 진행하다가 crash가 발생했는지 어느정도 추론이 가능하였다.  Breadcrumb라는 기능은 빵 가루를 흘리듯이 주요 지점마다 로그를 남겨 시간 순서대로 볼 수 있었고, userflow라는 기능을 통해 login의 시작와 성공/실패 같은 흐름의 로그를 남길 수 있었다.

Visual Studio App Center에도 crash 리포팅 기능이 있는데, 이 서비스의 역사는 아직 깊지는 않다.  이전에 HockeyApp이 전신으로 보인다.  현재(2019.8)는 crash 리포트 및 배포쪽은 무료로 사용 가능하다.  Unity extension 버젼이 아직 1.1.2로 6번의 릴리즈밖에 안된 만큼 아직 서비스의 초기단계로 보인다.  Unity에 연동 테스트를 해보니 설치는 정말 간단하였다.  Unity 내부 폴더 Appcenter라는 곳 안에 모든 관련 리소스 및 라이브러리들이 모여 있어서, 여기저기 난잡하게 퍼져서 라이브러리 제거도 어렵게 된 다른 서비스와는 달랐다.  게임 오브젝트와 스크립트만 붙이면, 모든 연동관련 작업은 끝난다.  다만 crash를 일부러 발생시켜보는 테스트를 진행해 보았지만, crash 기록이 나타나지 않아 자세한 결과는 보지 못했다.  무료로 이용할 경우 3개월간만 기록이 유지되는 것도 감수 해야 하는 것 중 하나이다.

Firebase Crashlytics는 사실 왠만하면 연동하고 싶지 않았다.  개인적으로 설치/제거가 단순명료한 서비스 및 플랫폼을 좋아하는 데, Firebase관련 서비스들은 그렇지 않은 경험이 있어서 더욱 그랬다.  Crashlytics를 연동해보니 확실히 설치하는 데 어려움이 있었다.  Unity에 Crashlytics extension을 import하면 Firebase / Parse / PlayServiceResolver / Plugins 폴더안에 수 십개의 라이브러리와 리소스들이 배치된다.  여기에는 기존에 사용중이던 라이브러리들과 중복되는 경우도 있고, AndroidManifest도 기존에 설정된 것과 충돌이 날 수 있다.  서비스를 오래 해오던 게임일 수록 설치가 더 쉽지 않다.  기존에 사용하던 여러 라이브러리들이 있기 때문에 기존 것을 바꿔야 되는 경우도 발생하기 때문이다.  나도 이 문제를 피하지는 못했다.  GoogleUtitlities나 GoogleAppMeasurement 같은 framework는 기존에도 사용중이었기 때문에 설치시에 제외를 했지만, 빌드를 해보니 현재 버젼과 맞지 않아 빌드가 되지 않았다.  결국 관련 라이브러리를 버젼 업하여 해결했지만, 사이드 이펙트가 발생하는지는 지켜볼 일이다.  그 외에 PlayServiceResolver를 사용하면 gradle 빌드 스크립트를 자동으로 수정해 주는데, 기존 라이브러리와 중복되는 것까지는 체크를 해주지 못하기 때문에 결국 빌드 실패로 이어진다.  이때, 에러 메세지가 단순히 TransformException으로 발생하기도 하는데, 어느 라이브러기가 중복되는 지를 찾는 것은 쉽지 않다.  이런 명성 때문에 주변 개발자 분들에게도 Firebase는 골치아프기로 유명하다.  여기저기 홍보적인 글에 간단하게 연동이 가능하다라는 얘기가 있는데 정말 사실이 아니다. (물론 개인적인 의견이다.)  그럼에도 불구하고 Crashlytics는 기능상으로 훌륭하다.  Apteligent의 breadcrumb/userflow같은 기능도 crashlytics.log를 통해 가능하고, key/value 형식의 로그도 가능하다.  그리고, 텍스트 검색도 할 수 있는데, 각 익셉션의 콜스택을 텍스트로 검색할 수 있다.  디바이스 정보에서는 기본적인 정보외에 메모리 정보까지 볼 수 있다.  Crash를 잡는 데 필요한 정보들이 많기 때문에 연동 후에는 확실히 유용하다.

개인적인 사용기이므로 객관적이고 과학적인 리뷰는 아님을 다시 한번 밝히며 글을 마친다.  끝.



Leave a Reply

Your email address will not be published. Required fields are marked *