레이블이 [Programming] Android인 게시물을 표시합니다. 모든 게시물 표시
레이블이 [Programming] Android인 게시물을 표시합니다. 모든 게시물 표시

2017년 3월 14일 화요일

[android studio] 앱을 업데이트 해봅시다. android studio 업데이트 apk 만들기.


안드로이드 스튜디오에서 업데이트 APK 추출.


출시 후에도 버그 수정. 고도화 작업. 코드 리팩토링 등을 하게 됩니다. 그리고 테스트를 진행해 보고 이상이 없을 새로운 버전으로 app 플레이 스토어에 올리게 되죠. 이번에 거래를 하고 있는 회사에서 업데이트 요청이 있었는데, 업데이트 apk 추출하는 경험이 없던터라 구글형님께 도움을 구하게 되었죠. 관련 글들을 찾아 있었지만, 그래도 이해가 가지 않는 부분들이 있어. 직접 기록해 두고자 포스팅 하게 되었습니다.


업데이트 apk 뽑는 방법은 처음 apk 만들때와 방법은 같습니다. 단지, 처음 출시할 apk 만드는 과정에서는 key store 생성하는 과정이 포함되어 있었다면 업데이트 apk 생성해 놨던 key store 이용해
 만든다는   다를 뿐이죠.





아주 단순합니다. 안드로이드 스튜디오에서 프로젝트를 열게 되면 build.gradle (Module: app) 이라는 곳에 versionCode versionName 있습니다. 구글 검색을 했을 매니페스트에 정보가 있다는 글들이 있는데 아무래도 android studio 아닌 eclipse 기준인듯 합니다.

versionName : app 플레이스토어에 업데이트가 되었을 사용자들이 보게 버전 정보 입니다. 1.1 넣을 경우 사용자 들은 1.1 버전이라는 것을 보게 되는 것이죠.

versionCode : 개발자가 내부적으로 관리할 코드번호 입니다. 업데이트를 위해 코드 수정을 모두 마친 versionCode 올려줘야 합니다. 스크린 샷의 프로젝트의 업데이트 진행을 위해서는 1 이상의 정수가 들어가야 하는거죠. 2 적어줬습니다. 플레이 스토어는 versionCode 감지하는 합니다. 전에 올렸던 apk  versionCode  1 인데같거나  이상의 정수가 아닐경우 업데이트가 되지 않습니다.



바로 요런 창을 띄웁니다.
프로덕션으로 APK 업로드. 업로드 실패.
창의 내용을 읽어 보면.
디버그가 가능한 APK 업로드 했습니다. 보안상의 이유로 Google Play 게시하기 전에 디버그를 사용 중지해야 합니다. - 부분은 릴리즈 타입의 apk 아닐   뜻합니다.
이미 버전 코드가 1 APK 있으므로 다른 버전 코드를 사용해야 합니다. - 바로 부분이 versionCode 올려 달라  뜻이죠.

릴리즈 버전의 apk 뽑았고, versionCode 또한 올렸으나 이러한 오류 창이 뜬다면, key store 파일 (확장자 jks 파일) 손상 되었을 있습니다. 따로 백업해 파일이 있다면 파일을 이용해서 다시 apk 생성하거나, 만약 백업해 둔게 없다면, 사실상 업데이트는 불가능하다고 있습니다.
그만큼 처음 apk 만들면서 생성해 key store 파일은 상당히 중요하기 때문에 백업을 해두시기 바랍니다.



자 이제 본격적으로 apk 를 만들어 보겠습니다. 처음 출시하기 위해 apk 를 생성할 때와 마찬가지로 Build - Generate Signed APK... 메뉴를 찾아 들어갑니다.
위 스크린 샷은 Mac 이지만 메뉴 이름은 동일할 것입니다.

생성할 때와 크게 다르지 않습니다. 곳에서는 마땅히 설정할 것이 없기 때문에 가볍게 Next 눌러줍시다.


여기서 부터 처음 apk 만드느냐, 업데이트 apk 만드느냐가 나뉘게 됩니다. 처음 생성할 때는 Create new... 선택해서 key store 생성하는 과정을 진행하게 되지만, 업데이트 apk 추출하기 위해서는 Choose existing... 으로 생성해 놓은 key store (확장자 .jks) 이용하게 됩니다.


처음 출시를 위해 생성했던 key store 파일을 찾아서 선택 줍니다. 여러 app 관리하시는 분이라면 업데이트 apk 관련이 있는 key store 파일을 선택해 줘야 하겠죠. 같은 경우에는 프로젝트 별로 코드와 jks 폴더화 해서 관리하고 있습니다. 저장한 경로를 알고 있어야 하는 이유는 때문인거죠.


key store 파일을 가져왔다면 생성할 입력했던 비밀번호를 입력하면 됩니다. 비밀번호와 별칭을 생성할 지정했던 것들로 입력해 주셨다면 Next 눌러줍시다.
Enter Master Password 라는 창이 있습니다. 창은 key store 비밀번호와 관련 없는 팝업 입니다. android studio 사용자 비밀번호를 입력하라는 것입니다. 한마디로 권한을 묻는 창입니다. 기억이 나지 않는다면 리셋 비밀번호를 해줘도 상관 없습니다.

이제 나머지는 생성할 때와 같습니다. APK Destination Folder APK 저장할 경로를 뜻합니다. 어디에 업데이트 apk 저장할 설정하는 것이죠. ... 선택해서 저장하고 싶은 경로를 선택해 주면 됩니다. Build Type release debug 선택할 있습니다. 플레이 스토어에 올리기 위해서는 release 선택하면 됩니다. 모든 설정이 끝났다면 Finish 눌러줍시다.

설정해 놓은 경로로 들어가 보면 app-release.apk 가 만들어져 있는 것을 확인할 수 있습니다. apk 를 만드는 과정에서는 apk 이름을 설정하는 부분이 따로 없습니다. 제 경우에는 생성한 apk 파일을 찾아 파일명을 바꿔줬습니다.
기존에 app-release.apk 가 있다면 그 파일을 덮어 쓰는 경우가 있기 때문에 이 역시 염두해 두고 관리하는 것을 추천합니다.

[android studio] 앱을 출시해 볼까요?. android studio apk 추출! 만들기!


안드로이드 스튜디오에서 apk 만들기


번의 안드로이드 앱을 개발하고 출시 했음에도 불구하고 apk 추출 방법이 기억나지 않아 구글형님께 도움을 받고 있습니다. 검색.. 검색.. .. 검색에도 만만치 않은 시간이 소요되죠.. 그래서 이번 포스팅은 다음에도 있을 apk 추출할 때를 대비하기 하기 위해 적게 되었습니다.

제가 처음 apk 추출할 때는 선임개발자 분이 있었습니다. 분은 한번 가르쳐 주셨죠. ! 이렇게 하는거야~ ~ 무슨일이 있었던 걸까.. !!! 배웠는데도 모르겠어!
지금은 선임개발자 없이 혼자 개발을 하다보니,, 물어볼 사람도 없습니다. 그런데! 개발을 의뢰한 회사가 무섭죠. 잘못 뽑으면 어떡하지?.. 라는 생각과 함께 검색을 해도 무섭습니다.


저와 같은 경험이 있으신 분들에게도 조금이나마 도움이 되지 않을까 하는 마음에 최대한 자세히 적어보려 합니다. 되도록,, 그냥 프로젝트 만들고 몇번 해보시는 것을 추천 드립니다.


먼저! 어떡해 뽑아야 할까요. apk 만들고자 하는 프로젝트를 열어야 겠죠!. 그리고 Build 메뉴를 찾아 봅시닷. 보면 하위 메뉴 중에 Generate Signed APK... 이라고 보이실 겁니다. 과감히 클릭해 줍니다.

Build -> Generate Signed APK...


스크린 샷은 Mac 이지만,, 아마 메뉴는 같을 거에요



요런 팝업창이 뜹니다. .. 요때까지는 괜찮아요. 게임 설치 하듯이 Next 가볍게 눌러주면 됩니다.

요.. 창이 똭! 뜨면,, 일단 뭐지?. 라는 생각이 들겁니다. 저는 이 때부터 머리가 멍! 했었죠. 뭘.. 어떡하라는거야? 이 팝업창 에서 부터 apk 를 생성할지, 아니면 apk 를 업데이트 할지가 나뉘게 됩니다. 지금은 apk 를 만드는 과정을 적고 있기 때문에 Create new... 를 눌러줍니다. Choose existing... 은 업데이트를 할 때 선택하게 됩니다. apk 업데이트 포스팅을 추가로 할 예정이기 때문에 그 때 다시 한번 자세히 적어보도록 하겠습니다.
일종의 apk key 를 만드는 과정으로 넘어간다고 생각 하시면 됩니다. 그렇다면!! 업데이트는?? 생성해 놨던 key 를 다시 사용하는게 되겠죠?.

Create New... 누르면 나오는 팝업 창입니다. 아주 친절하게 적혀 있네요. New Key Store. 곳에 key 정보를 입력하게 됩니다. 먼저 경로를 설정하기 위해 ... 눌러줍시다. 나머지는 잠시후 다시 적도록 하겠습니다.



요런 경로를 지정해 주는 팝업 창이 뜰 겁니다. 이 경로는 key 파일이 저장될 경로인데요. 이름은 저는 보통 '앱 이름' 으로 해 줍니다. 이름 생각하기 너무 힘들어요..
개인적으로 '앱 이름' 으로 지정 했을 때 여러 앱들이 생기고 난 후 관리하는게 편하더군요. 왜냐하면,, apk 를 업데이트 할 때 이 jks 확장자를 가진 key 파일이 필요하기 때문이죠.


경로를 선택하고 나면 다시 팝업창으로 돌아옵니다. 물론,, Key store Path :  부분은 본인이 선택한 경로로 채워져 있습니다. 이제 나머지 곳을 채워줘야 하는데요
먼저! key store 비밀번호를 적어줍니다. 사실.. 바로 아래 있는 key 비밀번호와 무슨 차이가 있는줄은 모르겠습니다. 그냥,, 동일한 비밀번호를 적어줬습니다. 사실,, .. 여러 사이트 가입할 때마다 우리는 한개의 비밀번호만 쓰지 않나요??????!.. 경우엔 개발을 의뢰한 회사에서 비밀번호를 정해줬습니다

그게 아니라면 회사마다 다르겠지만 경우 의뢰한 회사의 구글 플레이스토어 계정과 비밀번호를 알려줬습니다. 대신 출시도 직접 해달라고 하죠. 그러면 계정과 비번을 이름과 비번으로 사용했습니다.

위의 스크린 샷을 보면 빨간색 네모 박스만 채워 넣어도 된다고 합니다만,, 경우에는 개인앱이 아닌 의뢰를 받아 앱을 개발하고 apk 추출 했기 때문에 채워봤습니다. Alias 의뢰한 회사 이름. 나머지도 의뢰한 회사 이름을 적어넣었습니다.

이렇게 출시를 했음에도 크게 잘못되거나 적은 한번도 없었습니다
모든 빈칸을 채우셨다면 Ok 눌러 줍시다.




처음 팝업창으로 돌아왔네요. 다른 점이 있다면, 지금까지 진행 (key 만드는 과정) 왔기 때문에 빈곳은 어느정도 채워져 있습니다. 그리고 물어보는 체크박스가 보이죠. 비밀번호 기억할래????.

한개의 앱을 계속 관리할 때는 기억하는게 편할수도 있겠지만, 여러 앱을 관리한다면 가급적 비밀번호는 기억하지 않는게 좋은듯 합니다. 이건 선택입니다!.

다음으로 넘어오면 마지막! apk 저장 경로를 물어봅니다. ... 눌러서 어디에 저장할지 선택하시면 됩니다. 빌드 타입은 출시를 것이기 때문에 release 라고 했습니다. debug 용은 굳이.. 이렇게 뽑을 필요가 없죠. Finish 눌러주면 설정한 경로로 apk 만들어 집니다. 약간의 로딩 시간이 걸리죠.. 등치가 앱일수록 시간은 걸릴 있습니다.

하나더 말씀 드리자면,, 개발을 하는 도중에 개발을 전혀 모르는 분들(보통은 개발을 모르는 의뢰를 하신분들 이겠죠?.) 진행상황을 보고 싶다며 apk 달라고 합니다
그러면,, 저는 apk 굳이 뽑지 않습니다. 귀찮고, 시간도 걸릴 뿐더러, 어차피 진행상황을 알고자 하는 것이기 때문에 프로젝트 한번 빌드를 경우라면 프로젝트 폴더 안에 debug apk 이미 생성 되어 있을 것입니다. apk 던져주면 됩니다.
외에도 굳이 android studio 빌드를 통해서 앱을 설치할 없을 방법을 사용하면 편합니다.

프로젝트 폴더 -> app -> build -> outputs -> apk 경로로 들어가면 app-debug.apk 파일을 보실 있습니다. 하지  파일은 정식으로 뽑은 것이 아니기 때문에 플레이 스토어에 올릴 용도는 아닙니다.



모든 과정을 마치고 설정 했던 경로로 폴더 이동을 해봤습니다. jks 파일과 apk 나란히 있군요!. 저의 경우에는 이렇게 한가지 경로를 선택해서 뽑습니다.
경로 설정을 하지 않고 Next 난타하다보면 자기가 뽑은 jks apk 어디 있는지,,, 한참을 찾게 되는 참사가 발생할수도 있죠. (결국 다시 만들게 됩니다..)
apk 없이 만들어도 상관 없습니다.

더군다나!!!! jks 상당히 중요한 파일입니다. 파일이 없다면,, 업데이트를 업데이트가 아닌 앱을 출시하는 결과를 낳을수도 있습니다. 정말 중요하죠. 백업해 두시길 권장합니다.

주변의 어떤 개발자 분은,, 아무 생각 없이 pc 밀었다가 jks 날리는 바람에 퇴직을 맛보기도 하셨다는,,, 그만큼 중요한 파일이니 가급적 만드는 순간 보관해 놔야겠죠.
제가 편하기 위해 이번 포스팅을 했지만, 처음 apk 뽑으시는 분들께도 도움이 되는 글이 되었으면 좋겠습니다.