안드로이드 앱으로 푼돈모아보자

용돈 벌기 위한 나의 안드로이드 앱 개발 도전기

준영아빠78 2022. 4. 2. 00:34

본인이 만든 앱을 소개합니다.

https://play.google.com/store/apps/details?id=com.kh.kyeolhap

 

현직 개발자로 10년 이상 재직하고 있지만 본업이 임베디드 쪽이라 안드로이드쪽은 전혀 문외한이었다.

주로 C, C++ 위주로 개발하고 있고 JAVA 언어는 학부시절 맛만 본 상태였고 Kotlin 언어는 더욱 생소한 언어였다.

 

책으로 배워볼까?

처음으로 구매했던 책은 Do It 안드로이드 앱 프로그래밍

이라는 책이었다. 매우 생소함을 뚥고 Hello world 격인 기본 위젯들을 몇개 만들어보고 휴대폰에서 동작도 시키는 수준까지 진행하였다. 그러나 미처 예측하지 못했던 장벽이 있었는데 그것은 언어나 개발툴에 대한 진입 장벽이 아닌 개발 노트북의 성능이었다.

코드를 수정하고 빌드를 돌리고 앱에서 위젯이 뜨는데 수분을 기다려야 했었다.

기다림의 압박이 너무 크고 또 꾸준하게 오래 못하는 본인 성격 탓에 더이상의 전진 없이 접고 말았다

 

코틀린을 만나다

그렇게 안드로이드와 이별한채 살고 있다가 우연히 사내 교육 프로그램으로 다시 안드로이드를 만날 수 있게 되었다. 과정명은 잘 기억이 안나지만 코틀린 안드로이드 프로그래밍이었다. 부푼 기대를 안고 강의를 들었지만 아뿔사.. 어느정도의 안드로이드 프로그래밍에 대한 선수지식이 있어야했었다. 즉 기초부터 알려주는 강의가 아니었다. 기존의 자바언어로 구현하는 것보다 코틀린으로 구현하는게 보다 표현이 간결하구나 정도 의 수확만 얻을 수 있었다. 하긴 겨우 5일짜리 수업에서 뭘 기대했었을까.

그때 만났던 교재가 커니의 코틀린 이라는 책인데.. 아직까지 고이 간직하고 있다. 물론 읽어본적은 없다.

 

온라인 강좌?

 

그렇게 또 좌절하고 오랬동안 안드로이드와 이별의 시간을 가지고 있다가 지인의 소개로 '패스트 캠퍼스' 를 알게 되었다. 다양한 분야의 온라인 강좌들이 있고 한번 수강하면 평생 소장할 수 있는 시스템이 맘에 들었다. (광고 아님)

한가지 단점은 가격이 좀 비싸다는 것이다.

여러가지 강의 카테고리중 모바일 앱 개발을 선택하면 아래와 같이 다양한 강의 가 나온다

그중 본인은 "30개 프로젝트로 배우는 안드로이드 앱 개발 with Kotlin 을 선택해서 듣고 있다"

코틀린을 잘 몰라도, 안드로이드 프로그래밍을 잘 몰라도 쉽게 따라하면서 이해할 수 있었다. 하지만 만약 비전공자가 과정을 듣는다면 쉽지 않을것 같았다. 코틀린 언어에 대한 소개는 그렇게 체계적이지 않았음을 느꼈다. 

하지만 최초에 안드로이드 프로그래밍을 시작할때도 느꼈던 것처럼 느린 노트북의 압박은 여전히 매우 큰 인내심을 느끼게 만들었다. 당시 대비 신규 노트북 구입 등으로 인해 많이 빨라졌지만 여젼히 코딩 - 빌드 - 테스트의 iteration 의 주기가 길다고 느꼇다. 

 

데스크탑 PC 를 사자

노트북으로 실습하는데 가장 문제는 안드로이드 애뮬레이터 였다. 대량의 그래픽 연산을 해야하기 때문에 매우 응답이 느리거나 동작중 노트북이 가 누워버리는 현상들도 자주 만났었다. 천성이 성격이 급해서 느린건 매우 못견디는 스타일이라 아무래도 데스크탑 PC 의 필요성을 느낄 수 밖에 없었다.

와이프의 결재를 득한 후 다나와에서 제품을 살펴보는데.... 역시 그래픽 카드의 가격은 고공행진을 하고 있었다. 

대략 아래 그림 정도의 사양의 PC 를 구매했다. ( 더럽게 비싸네 )

 

역시 PC 를 업그레이드 하였더니 코딩 - 빌드 - 테스트의 iteration 이 놀라보게 빨라졌다.

엄청고가의 PC 는 아니지만 돈이 좋긴 좋다는 생각을했다.

 

 

앱개발 마렵다

패스트 캠퍼스로 가장 앱의 기본 기능을 익혔더니 문득 생각이 들었다. 이정도면 단순한 앱 정도는 만들 수 있지 않을까?

애초 목적이 자기개발 따위는 개나주고 푼돈 한번 벌어볼까 하는 순진하면서도 음흉한 사상으로 출발했기 때문에 과정진도는 다음에 나가고 머라도 하나 만들어 보고 싶은 충동이 들었다. 어짜피 평생소장인데 뭐.. 하는 마음으로 평생 소장만 할거같다는 생각이 들었지만 일단 그건 나중에 생각하기로 했다.

 

 

무슨 앱을 만들지?

일단 데이터베이스가 필요하거나, 휴대폰의 권한을 얻어서 무언가 하는것은 배제했다. 아직 그정도로 과정의 진도가 나가지 않은 상태였고 카메라나 위치정보 등을 활용한 앱은 왠지 컴플라이언스 이슈의 압박으로 두려움이 있었다. 그래서 결론을 내린것이 아무런 권한도 필요없고 방대한 데이터도 필요없은 초단순 킬링타임용 게임을 만들어보기로 했다.

며칠동안 틈틈히 잠을 아껴가며 생각해보다가 과거에 인상깊었던 TV 프로그램이 생각났다.

 

머리쓰는 게임의 총집합체 지니어스 게임.

그중에서도 "결!합!" 게임이 마음에 들었다. 마음에 들었다는 뜻은 게임에 특별히 애정이 있었다는 것은 전혀 아니고 ( 솔직히 게임이 너무 어렵다 ) 만들기 만만했다는 뜻 이었다. 게임의 자세한 설명은 구글링 해보면 너무 많이 나와 있으니 생략하겠다.

 

설계따위는 개나 주자

다니는 회사의 프로젝트라면 개발전에 이것저것 따져보면서 SW 를 어떤 구조로 가져가고 Diagram 을 그려보고 데이터흐름을 따져보고 리소스는 어떻게 분배하는지 등을 따지겠지만 지금 내가 하는것은 일이 아니고 놀이이기 때문에 이런것들은 개나 주자. 그리고 닥치고 코딩하자. 리펙토링은 없다. 코드는 최대한 방대하고 길어야 맛이지. 개발자로서 부끄러움은 있지만 다시한번 말하지만 이것은 일이 아니고 놀이이기 때문에 내키는 대로 할 것이다

 

형상관리는 해야겠지

아무리 마음대로 하더라고 한가지 꼭 해야 할것은 있다. 그것은 바로 형상관리!! 한순간의 실수로 많은 시간의 노력이 물거품이 될 수도 있다. 실수로 파일을 삭제하거나, 자녀의 압박에 의해 프로젝트가 훼손될 수도 있다. 또는 코딩중 되돌아 올수 있는 잘못된 방향으로 나아감이 UnDo 의 한계를 벗어날 수 있기 때문에 롤플레잉게임중 Save 기능과 같은 귀한 존재이므로 꼭 해야 한다.

본인은 가장 훌륭하다고 생각되는 형상 도구인 github 을 이용하기로 했다. 링크는 구글링 하면 걍 나오기 때문에 생략함. 이왕 깃헙을 쓰는김에 submissin 관리도 하자. 내가 앱을 출시하는데 어느 시점의 버젼으로 릴리즈 했었는지 저장해 두는게 좋을것 같다는 막연한 생각을 했다. 자매품(?) 깃랩도 있는거 같은데 써보진 않았다.

 

언어는 영어? 한글?

 

한국에만 출시하는것보다 그래도 글로벌 시대인데 글로벌 출시 를 하기로 결정했다.

아직 안드로이드 앱의 localization 을 어떻게 하는지 잘 모르기 때문에 다국어 지원은 잘몰라서 일단은 영어로 만들기로 했다. 그러면 앱 이름도 결!합! 이라고 이름 지으면 외쿡 사람들은 잘 모르겟네 라고 생각했다. 이 게임이 무언가 조건에 맞는 도형을 찾는게임이니까.... shape discovery 라고 짓자고 결정했다. 나중에 알게된 사실이지만 앱 이름은 언제든지 바꿀수 있었다. 이름을 잘지어야 노출이 잘 된다고 하지만 시작부터 크게 고민할 일이었나 싶기도 하다.

 

설계따위는 개나주자라고 했는데...

지금까지 여러가지 결정사항들은 사실 처음부터 생각했던것은 아니었다. 처음엔 닥치고 코딩했고 이것저것 하면서 그때 그때 즉흥적으로 결정을 했었다. 뿐만아니라 닥치고 코딩의 폐해가 처음에는 크게 느끼지 못했는데 시간이경과됨에 따라 나타나기 시작했다. 코드는 갈수록 스파게티 코드가되고 있었고 네이밍 룰 같은 코드컨벤션 일관성도 전혀 없었다. 도처에 중복되는 코드들이 널려있었고 버그를 발견하면 고치는데 시간도 꽤나 많이 걸렸다. 주석관리도 없어 며칠이 지나면 과거 작성한 코드들의 의미를 되새기는데 시간이 소요되기도 했다.

파일도 몇개안되고 라인도 몇줄안되지만 틈틈히 잠을 아껴가며 하루에 한두시간씩 작업할 수밖에 없어서 일관성이 떨어지고 복잡도가 높아가는 것 같았다. 그나마 형상관리는 하고 있어서 나중에 날 잡아서 리펙토링을 한번은 해야겠다고 다짐만 했다.

 

드디어 첫번째 릴리즈 버젼을 만들었다

 

초보 안드로이드 개발자로 첫번째 버젼을 만들었다

특별히 디자인이 필요하지 않아 UX 는 최대한 단순하고 초라하게 꾸렸다. 테스트 케이스 설계도 하지 않아 이래저래 테스트 해보면 버그도 많지만 그냥 게임은 할 수 있는 수준이라고 나 혼자 생각했다. 완성도보다는 일단 앱을 마켓에 올려보고 싶은 생각이 너무 앞서 있었지만... 상관없었다. 놀이인데

 


장사를 하려면 돈을 내야지

 

안드로이드 마켓에 앱을 게시하려면 먼저 개발자 등록을 해야 한다. 구글의 플레이 콘솔이라는 서비스에서 등록을 해야 하는데 지금은 25달러로 많이 내려갔다. 본인은 몇년전에 등록만 했었는데 7~8만원 냈던걸로 기억한다.. 기억의 왜곡에 의해 정확한지는 모르겠다.

 

광고를 넣어보자

 

드디어 가장 기대되는 시간이 왔다. 마켓에 앱 등록을 하고 나면 앱에 광고를 넣을 수 있다. 본인은 앱 검토하는데 5일 정도 걸렸던것 같다. 광고서비스는 여러업체가 있지만 본인은 애드몹을 선택했다

 

그리고 광고는 여러가지 종류를 넣을 수있지만 베너 광고를 넣기로 했다. 전면광고는..음..사용자를 빡치게한다고 오랬동안 생각해왔었기 때문에 내키지 않았다. 광고의 종류는 여러가지가 있고 광고별로 넣는 방식은 조금씩 다른것 같다. 다음에 기회되면 베너 말고 다른 광고도 넣기를 검토해 볼 생각이다.

 

 

광고 게시 중지를 당하다

 

마켓에 앱을 게시하고 며칠이 지났을까 난데없는 복병을 만났다. 그것은 광고 게시 페널티 - 광고 노출 일시 중지를 만났다. 에드몹에 들어가보니 무효 트래픽 문제로 광고 개제가 제한되고 있다는 메시지가 나왔다.

에드몹 가이드를 살펴보니 자기가 만든 앱에서 노출된 광고를 클릭하면 안되는거였다. 본인은 그것을 인지하지 못하고 얇팍하게 몇푼이라도 적립해보겠다고 본인이 만든앱에서 베너 광고를 두세번 눌렀던것 같았다.

 

본인과 같은 유사한 경험사례가 있나 검색을 해봤더니 몇몇 케이스를 발견할 수 있었다. 해결 방법은 일단 기다리는것이라고 했다. 최대 한달정도 있으면 제한이 풀린다고 했다. 광고 노출 제한이 반복되면 영구적으로 계정이 블럭될 수 있으니 조심해야 하겠다고 생각했다.

 

또다른 복병 : 마켓에 검색이 안된다

마켓에 앱이 등록된지 3일이 지났지만 또다른 복병을 만났다. 그것은 마켓에 앱이 검색되지 않는다는 것 이었다. shape discovery 로 검색을 하고 아무리 스크롤을 저 아래로 내려봐도 노출이 안되었다.

구글링을 해보니 개발자는 너무 많고 모든 앱을 다 마켓에 노출시키기에는 한계가 있다고 했다. 그렇다 세계에는 나같은 놈들이 밤하늘의 저 수많은 은하수의 별들만큼 많았다는 사실은 미쳐몰랐었다. 앱이 노출이 안되니 다운로드 숫자는 0 에 수렴할테도 그나마 잦은 버젼업과 유지보수를 하면 마켓에 노출될 가능성이 있다는 정보를 획득했다.

 

며칠동안 열심히 버그를 고치고 기능을 추가하여 버젼을 7 까지 올렸더니 드디어 마켓에 노출이 되기 시작했다. 물론 스크롤을 한참 내려야 발견되었다. 노출 순위를 높이기 위해서는 좀더 많은 다운로드 숫자와 유지보수가 필요할 것 같다.

 

 

마치며

역시 돈벌기는 생각보다 쉽지 않았다. 앱을 만들고 광고를 넣어서 마켓에 올리는 것 말고도 여러가지 복병이 있었다.

하지만 일단 안드로이드 앱 개발에 대한 진입장벽은 넘었으니 미래를 예측할 수는 없지만 계속 나아가볼 것을 다짐해 본다 라는 손발이 오글거리는 멘트로 마무리 합니다.

 

잠깐!! 혹시 누군가가 제 글을 보시고 유익했거나 재미있었다면 저의 어플을 다운로드 해 주시면 매우 복 받을실 겁니다.

생각보다 게임은 재미있습니다.

https://play.google.com/store/apps/details?id=com.kh.kyeolhap