안드로이드 Debugging
처음 우리 팀은 IOS 어플 출시를 계획하고 있었다. 그러나 우리 팀원은 4명 그 중 2명이 안드로이드 핸드폰 사용자다. 그래도우리 팀원 네명이서 채팅은 해봐야 하지 않겠는가. React Native언어로 개발을 하다보니 ‘자바스크립트로 코드를 짜면 안드로이드와 ios 모두에 적용할 수 있다’는 React-Native의 장점 활용하여 안드로이드도 시도하게되었다.
계속 아이폰 시뮬레이터로 어플을 돌려보다가 안드로이드 시뮬레이터로 어플을 돌려보니 전반적은 틀은 같았지만 화면의 크기나 글씨체, 헤더부분등 몇 몇 부분이 생각한 것과 조금 달랐고, 다른 repository를 만들어 안드로이드 가다듬기 작업에 들어갔다.
크고 작은 문제점들을 고치고 8/30일 어플의 Beta1.0.0을 구글 플레이 스토어에 출시했다.
출시가 되고 나서 안드로이드 핸드폰을 사용하는 동기들에게 사용해보라고 하였더니..지금까지 없었던 세 가지 버그들이 발견되었다.

첫 번째 버그는 어플을 처음 사용할 때 채팅방에 접속하면 바로 다시 되돌아오는 오류다. 이는 채팅방이 생기지 않아서 발생하는 오류이다. 왜 이런 문제가 발생했을지 고민해보니 채팅방에 처음 들어갈 때 로딩창에서 위치정보공유 동의를 구하는 Alert창이 뜨고 사용자가 동의하면 그 위치를 기반으로 채팅방을 만드는 로직인데, 처음 채팅방에 접속할 때는 위치정보공유 동의를 받기 전이기 때문에 서버는 사용자의 위치를 알지 못하여 채팅방이 생성되지 않는 것이다. 이 문제는 우리가 계속 시뮬레이터로만 돌려보다보니 간과한 문제인 것 같았다. 따라서 위치정보공유 동의를 받는 부분을 채팅방에 접속하기 전에 받는 방향으로 해결하였다.
두번째 버그는 채팅방에서 공격 이벤트가 발생하게되면 공격을 당한 사람과 공격을 한 사람 모두가 튕겨버린다. 이 문제는 Expo를 통해 돌려보았을 때 전혀 문제될 게 없었던 부분이어서 어떻게 해결해야될지 정말 막막했다. 천천히 생각해보았다. 채팅방에서 공격을 당한 사람과 공격을 한 사람 딱 이 두사람만 튕기는 걸로 보아 분명 문제는 공격 이벤트가 발생했을 때 공통적으로 실행되는 부분 때문일 것이다. 이는 바로 Vibration 부분이었다. 공격을 할 때 내가 공격을 하고 있다는 느낌을 살리기 위해 진동기능을 추가했다.

ios와 달리 안드로이드에서는 진동기능을 사용하기위해 한가지 조치를 취해주었어야했는데 처음 ios를 기반으로 어플을 만들다보니 조치를 취하지 않고 가볍게 넘기고 지나갔던 것 같다.
세번째 버그는 사용자가 어플을 사용하다가 백그라운드로 나가거나, 다른 어플을 사용하거나 했을 때 다시 어플로 돌아오면 기존에 보고 있었던 화면이 나오지 않고 무조건 채팅방 접속하는 버튼이 있는 화면(OpenBox페이지)으로 되돌아오게 된다. 생각보다 큰 문제다. 사용자가 이 어플을 사용하다가 충분히 다른 어플을 사용할 수도 있고, 전화를 받을 수 도 있다. 그 때마다 사용하던 게 초기화 된다면 너무 좋지 않은 어플이다. 이 문제를 어떻게 해결해야할까 막막했다. 뭐가 문제일지 이런저런 검색도 해보았다. stuck on page..이런 식으로 그러나 이렇다할 해결책을 얻지 못하고 헤매고 있었다. 코드를 천천히 살펴보기로 했다. 내가 지금 어떤 페이지에 있던 상관없이 무조건 OpenBox페이지로 돌아오게된다는 건 네비게이터에 문제가 있을 것 같다고 생각하고 최상단 페이지인 App.js부터 살펴보았다.
앱 시작하는 초기 화면인 Landing 페이지를 살펴보고 있을때

이 부분이 눈에 들어왔다. 앱을 사용중에 백그라운드로 나갔다 들어오게되면 계속 저부분이 실행되어 OpenBox페이지로 계속 돌아가게된다.
저 부분은 백버튼을 눌러서 Landing페이지로 돌아갔을때 아무런 반응이 없고 그 페이지에 계속 머물러 있어서 설정해 놓은 부분이었다. 저 부분이 없으면 어떤 페이지에 있어도 백그라운드로 나갔다 들어오면 기존 페이지가 계속 유지 되었다. 따라서 저 부분을 삭제하고, BackHandler를 사용하여 Landing페이지로 백버튼을 눌러 돌아왔을때 앱을 종료시키고 재실행 시키는 방법으로 해결하였다.
이번에 이렇게 세가지 버그를 해결해나가면서 느낀 건 ‘등잔 밑이 어둡다’라는 것이다. 처음에 오류를 보고 내 코드를 먼저 볼 생각을 하지 않고 인터넷에 비슷한 오류가 있는가 부터 검색해 보았다. 그러나 오류는 생각보다 가까운 곳에 있었다.