크래시 대응

Google Store 에서 제공하는 Android Vital 의 측정값이 좋지 않았다.

현 회사 프로젝트의 크래시 비율이 2.08 % 가량으로 매우 높았다 . ( 비정상 작동 임계점 1.09 % )

이는 여러모로 불리하게 작용한다 . 구글 알고리즘도 그렇고 , 피쳐드 대상에서도 제외되니 말이다.

이를 해결하기로 하고 , 다음과 같은 작업을 실행했다.

  1. 주된 크래시 원인 분석과 해결
  2. 유저 크래시 정보 수집을 도울 만한 운영툴 부착

[1]을 시행한 결과 ,

대부분의(97%) 크래시가 Android 8.0 이상에서 발생하며, 대부분 JniBrigde 라는 스택이 크래시 로그에서 발견된다는 점을 알아냈다.

위 키워드를 조합해서 , StackOverFlow 에 비슷한 이슈 트래킹이 있고 , 이미 솔루션이 공유되고 있다는 것을 확인했다.

해결법

그래서 결론적으로, Unity Editor 의 버전을 2017.1.1f -> 2017.4.25f 로 업데이트 하기로 결정했다.

GPGS 와 Firebase 플러그인도 버전을 올렸다.

(GPGS 9.62 , Firebase 는 당시 최신으로)

그 과정에서 , GPGS 가 SocailUser.Authenticate()를 작동하면 , 크래시를 일으켜서 좀 고생했다.

그래서 ADB logcat 으로 크래시 부분을 확인해서 , 검색해서 해법을 찾았다.

해결법

이 문제는 생각보다 단순한 해결법이 있었는데, Android Manifest 템플릿 일부를 매직넘버처럼 적어서 사용하고 있어서

string 처럼 인식해서 오류가 나는 것이었다. 그래서 아스키 코드로 Digit 넘버 앞에 붙는 \u003 을 붙이는 것만으로 해결되었다.

약간 야크쉐이빙 ( 문제를 해결하러 관계가 적어보이는 것들을 빙빙 돌아가며 해결하는 것 )인 감이 없잖아 있었지만,

결론적으로 잘 구동되었고, 후에 크래시틱스로 수집한 정보에 따르면,

크래시 비율이 2.08 % –> 0.02 % 로 감소했으니, 성공적인 작업이었다.

[2]의 작업으로 Firebase Crashylytics 부착

아직 Unity 는 beta 지만, ( Fabric 시절에 잘만 돌아가던 기능이 왜 이제 베타인지는 모르겠지만 )

성공적으로 잘 부착되었고 , 덕분에 이제 정확한 크래시 원인을 짚고 빠르게 대응할 수 있게 되었다.