Google Store 에서 제공하는 Android Vital 의 측정값이 좋지 않았다.
현 회사 프로젝트의 크래시 비율이 2.08 % 가량으로 매우 높았다 . ( 비정상 작동 임계점 1.09 % )
이는 여러모로 불리하게 작용한다 . 구글 알고리즘도 그렇고 , 피쳐드 대상에서도 제외되니 말이다.
이를 해결하기로 하고 , 다음과 같은 작업을 실행했다.
- 주된 크래시 원인 분석과 해결
- 유저 크래시 정보 수집을 도울 만한 운영툴 부착
[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 시절에 잘만 돌아가던 기능이 왜 이제 베타인지는 모르겠지만 )
성공적으로 잘 부착되었고 , 덕분에 이제 정확한 크래시 원인을 짚고 빠르게 대응할 수 있게 되었다.