개발자 블로그

첫 번째 앱을 출시했다가 다시 내리기까지.. 본문

1인 개발자 이야기

첫 번째 앱을 출시했다가 다시 내리기까지..

로이드.Roid 2016. 10. 20. 15:00

조금 지난 이야기인데 한 번 해보려고 한다. 생애 처음으로 앱을 출시하면서 겪은 이야기다. 참고로 안드로이드 앱이다. 

두 번째 앱까지 출시한 지금은 앱 등록하는게 별거 아니지만 처음 할 때는 참 어려웠다. 아, 스토어 등록정보 작성하는건 지금도 너무 어렵다. 글쓰는 재주가 없어서 그런 것 같다. 

글쎄다.. 내 나름의 판단으로는 첫 번째 앱이었지만 꽤 성공적이었다고 생각했다. 처음에는 반응이 없었지만, 이건 모든 앱이 공통적으로 겪는 일인 것 같다. 구글 플레이에서 검색결과 노출 알고리즘을 모르겠지만 처음 출시하면 순위가 꽤 낮다. 계속 업데이트 하다보면 어느 순간 순위가 오르는데 순위가 슬금슬금 오를수록 다운로드 수도 점점 증가한다. 

그렇게해서 내 앱을 대표하는 키워드로 검색했을 때 검색결과 네 번째 순위에까지 올랐다. 솔직히 비슷한 앱이 이미 많이 나와있는 상황에서 이정도 순위까지 오를 수 있을거라고는 생각 못했다. 애초에 내가 필요해서 만든 앱이었으니깐 다른 사람들이 많이 안쓴다고해도 괜찮다고 생각했었는데, 반응이 좋으니 기분이 정말 좋았다.

그러던 와중에 내 앱에 문제가 있다는 사실을 알게되었다. 안드로이드 마시멜로우 버전에서만 발생하는 문제였는데.. 문제는 마시멜로우 버전이 탑재 된 안드로이드폰 사용자가 내 앱 사용자의 50%를 넘는다는 점이었다. 


경험있는 개발자라면 아마도 짐작했을 것 같은데 문제는 '권한' 관련 문제였다. 마시멜로우부터 달라진 권한모델을 사용하는데 그에 따른 대응을 하지 않은게 화근이었다. 

마시멜로우부터 달리지는 권한모델에 대한 이야기는 이미 알고 있었다. 기억하는 사람이 있을지 모르겠는데 안드로이드 킷캣버전에서 "App Ops(앱 옵스)" 라는 이름의 권한을 수정할 수 있는 기능이 잠시 존재했었다. 

※ 관련내용 보기 ☞ http://www.sisafocus.co.kr/news/articleView.html?idxno=85394

시간이 오래 지나서 흐릿하기는 하지만 내 기억으로는 구글 플레이어서 앱을 설치 할 때는 요구하는 권한에 대한 허용여부를 구하고 개별적인 권한의 회수는 설치 한 이후에 사용자가 선택해서 하는걸로 기억한다. 나는 마시멜로우의 권한모델도 이 때 킷캣버전에서 공개 된 방식으로 동작할거라고 생각했다. (실제로는 아니었지만..)

위와 같은 이유로 간간히 올라오던 비정상 종료 리포트는 사용자가 개별적으로 권한을 회수한 것이라고 생각했고.. 나중에 리포트가 하루에 몇 건씩 올라올 때가 되어서야 문제가 있구나.. 라고 생각했다.


뭐.. 변명을 조금 하고 넘어가자면 내가 가지고 있던 안드로이드 폰은 구형 기기에서 테스트하기 위한 삼성 갤럭시s2 공기계와 내가 실사용하고 있던 LG G2였다. 안드로 버전으로는 각각 젤리빈과 롤리팝이었다. 그래서 마시멜로우에서는 테스트 해볼 수가 없었다. 

에뮬레이터에서 테스트하면 되는거 아니냐고??
AMD CPU 쓰는 거지라서.. 에뮬레이터가 돌아가지 않는다. 

지니모션은 AMD CPU에서도 잘 돌아간다고??
응~ 그거 유료야 (관련글 : 2016/08/23 - [컴퓨터/유틸리티] - 지니모션(GenyMotion) 무료가 아니었네? )


이러한 문제는 사실 애초에 방지 할 수 있는 방법이 있었다. 안드로이드 스튜디오에서 개발할 때 "targetSdkVersion"을 롤리팝 버전으로 맞춰놨다면 애초에 발생하지 않을 문제였다. 난 targetSdkVersion의 의미에 대해서 제대로 알지 못했고, 안드로이드 스튜디오에서 디폴트로 셋팅한 값을 그대로 사용했다. (개발 당시는 '누가'가 정식으로 출시되기 전이라서 마시멜로우가 최신버전이었다.) 이 값을 만약에 롤리팝으로 맞췄다면 마시멜로우 기기에서는 호환성 모드로 돌아가기 때문에 이상없이 작동한다. 

참고로 저 값을 나중에 안드로이드 스튜디오에서 변경할 수는 있지만, 마시멜로우에서 롤리팝으로 낮추게 되면 구글 플레이에 APK를 업로드 할 수 없다. 애초에 잘 판단해서 값을 정해야 된다.


사실 여기까지 쓴 문제라면 그냥 '해결'하면 된다. 마시멜로우 권한모델을 적용하는건데 그렇게 어렵지않다. 나처럼 급하게 수정해야 되는 상황이라면 그냥 라이브러리 가져다 쓰면 된다. 내 경우에도 이렇게 해결했다. 진짜 수정은 정말 쉽다. 

※ 내가 사용한 라이브러리 ☞ http://gun0912.tistory.com/55 (마시멜로우 권한모델에 대한 자세한 설명도 있다.)


수정이 끝났다면? 테스트를 해야겠지.. 근데 테스트 할 수 있는 장비가 없다는게 문제다.. 약간 모험이긴 한데.. '어차피 지금도 마시멜로우에서 안돌아가고 있는데 그냥 배포하자'라고 생각했다. (이 부분 좀 더 설명하자면 앱이 아예 안돌아간건 아니다. 외부저장소에 대해서 접근하는 경우에만 비정상 종료되었다.) 그렇게 일단 배포한 뒤에 마시멜로우 폰을 쓰는 친구를 통해서 테스트를 진행했다. 


글로 봐서는 어떻게 느껴질지 모르겠지만 나한테는 위 과정들이 정말 짜증나고 답답한 일들이었다. 그래서 바로 새로운 개발 PC(인텔 CPU!!)를 주문했다. 

※ 관련글 : 2016/08/30 - [전업개발자 이야기] - 개발용 PC를 주문했다.


마시멜로우 문제는 해결했고, 이제 에뮬레이터도 돌릴 수 있으니 모든 문제가 해결되었다고 생각했는데 이번에는 윈도우10 정품인증이 말썽이었다. HDD 포멧 안하면 정품유지가 계속 될거라고 생각했는데 그게 아니었다. 정품인증 받는다고 또 한참의 삽질을 했다.

※ 관련글 : 2016/09/08 - [컴퓨터/OS] - 고난의 윈도우10 정품인증 후기


그리고 돌이킬 수 없는 실수를 저지르고 마는데... 개발용 PC를 포맷하고 복구하는 과정에서 앱 사이닝에서 사용했던 릴리즈키를 삭제하고 만다.. 지금 생각해보면 이 당시에 제정신이 아니었던 것 같다. 마시멜로우 오류 해결한다고 한참 정신없었고, 윈도우10 정품인증 가지고 또 한참을 씨름하고.. 거기다 제사 지내러 큰집을 왔다갔다 하고 했더니 말끔한 정신이 아니었던 것 같다. 

사실 릴리즈키를 날려먹은 사실도 모르고 있었다. 또 다른 오류가 발견되어서 해당 오류를 수정하고나서 구글 플레이에 릴리즈하려고 보니 그제서야 릴리즈키가 없다는걸 알게되었다. C드라이브는 여러번 포맷하고 파일로 덮어써서 그런지 복구 프로그램 돌려도 나오는건 없었다. 파일을 백업했던 파일서버는 3TB 하드디스크를 쓰고 있는데 복구프로그램을 18시간 정도 돌려봤지만 역시나 릴리즈키를 복구하는데는 실패했다. 


......진짜 이건 답이 없더라. 마시멜로우 권한 문제 같은 경우에는 그냥 수정하면 된다. 근데 릴리즈키 날려먹은거는 어떻게 하더라도 해결할 수 있는 방법이 없다. 더 이상 업데이트 할 수 없는 앱이 되어버린 것이다. 오류라도 없었다면 모르겠는데 오류를 남겨둔채로 업데이트를 못한다는건 정말.. 정신적인 압박이 상당했다. 그리고 너무 아까웠다. 다른 앱들에 비하면 초라한 사용자 숫자일지도 모르겠지만 내 입장에서는 너무나 큰 숫자고, 거기다 내 첫 번째 앱인데 이 앱을 포기해야 된다는게 참.. 다시 순위를 어떻게 올려야 할지도 막막하고.. 

근데 뭐 다른 방법이 없었기 때문에 앱을 내렸다. 다른 선택의 여지가 없었다.


(그래프의 정점을 찍을 때가 앱을 내렸을 때다.. 하루가 다르게 사용자가 늘고 있었는데.. 진짜 마음이 찢어진다.)


이 일을 겪으면서 최신 버전의 안드로이드 대응 개발에 대한 것들에 대해서 많이 배울 수 있었다. 릴리즈 키 관리의 중요성에 대해서도 알게 되었고. 하지만 시간이 아직 그렇게 많이 지나지 않아서 그런지 마냥 긍정적으로는 생각하지 못하겠다. 내 앱을 사용했던 사용자들, 그리고 지금도 사용중인 분들에게 미안한 마음이 너무 크다. 100% 내 실수로 발생한 일이니깐.. 새로 출시한 앱으로 갈아타 줬으면 좋겠는데 기존 앱 사용자들에게 공지 할 수 있는 방법이 없다는게 너무 안타깝다. 구글 플레이 스토어 등록정보에는 써놨지만 사실 이미 설치한 앱의 스토어 등록정보를 다시 보는 사람이 몇이나 될까..


어쨌든 패키지 명을 변경해서 앱을 새롭게 출시했고, 다행히 지금은 처음 출시한 앱의 다운로드 수를 넘어섰다. 하지만 여기까지 걸린 시간은 한 달 하고도 보름정도가 더 걸렸다. 낭비하지 않아도 되는 45일 정도의 시간을 그렇게 흘려보낸 셈이다. 처음부터 미리 철저히 준비를 하고 일을 진행했더라면.. 하는 후회가 남는다. 

여기까지가 내가 첫 번째 안드로이드 앱을 출시하면서 겪은 이야기다.



나 처럼 처음 앱을 출시하는 사람을 위해서 간단한 조언을 하자면..

1. targetSdkVersion 선택은 신중하게
2. 릴리즈 키 관리는 철저히
 - 난 지금 파일서버, 외장하드, e-mail 이렇게 세 군데 백업을 해놨다. 

Comments