차근차근/Android

[본문스크랩] apk 디컴파일부터 빌드, 서명, zip 정렬까지 한큐에 해결! 이보다 쉬운 설명은 없다고 장담한다.

예쁜꽃이피었으면 2014. 7. 29. 00:52

http://blog.naver.com/action713/220031993753


출처 Share World | 은성
원문 http://ikhaldfandei.blog.me/130185362518

간만에 공들인 포스팅 한 번 해볼까.

 

젠장. 공부해야 하는데.ㅜㅜ 구글까지 죄다 뒤졌으나 제대로된 설명이 거의 없었던 관계로 (딱 세 명이 제대로 설명했으나 필요한 부분에 비해 취약했으므로 짜집기 및 개나 소도 이해 하기 쉽도록 정리해보았음) 다음에 또 찾아 헤매지 않기 위해 정리도 할 겸 같은 어려움을 겪게 될 사람들에게 도움이 되고자 포스팅해본다.

 

apk 매니저니 apk tool이니 별 게 다 있던데 문제는 틀린 설명을 맞답시고 대충 때려박은 연놈들이 꽤 많더라-_-

 

 

1. 이 설명이 필요한 대상 : 외부 apk(이클립스에서 개발 중인 상태로 아직 apk화 되지 않은 파일이 아니라, 이미 외부에서 apk가 되어 나온 파일)을 가지고 있는 경우 이를 서명하기 위한 방법을 찾고 있는 사람들.

 

2. 필요한 준비물 : 

자바 설치

이클립스 설치

서명이 필요한 apk파일

이 설명을 읽고 있는 사람들은 아마 둘 다 설치되어 있을 확률이 높다고 보지만, 내 포스팅은 항상 '이보다 쉬운 설명이 없는걸 장담한다'가 모토이기 때문에 빠가사리도 이해 할 수 있을 정도로 쉽게 설명하겟음

 

자바 설치 방법은 모르시는 분들을 위해 첨부파일에 설치방법.docx로 걸어두었으니 내려 받아서 보면서 따라 설치하면 된다. 환경변수 설정 방법까지 죄다 나와있으니 한글과 영어만 읽을 줄 알면 된다. 혹시 MS Office가 설치되어 있지 않아 docx가 열리지 않는다면 카카오톡 아이디 : ikhaldfandei 로 문의 주시면 빠르게 답변 가능.

 

문제는 이클립스 설치가 시간이 제법 들기 때문에 좀 귀찮지만 앞으로 설명할 과정들 중에 가장 성가신 부분이라 할 정도로 뒤의 과정이 쉽기 때문에 코파면서 기다리면 된다. 이클립스 하나만 설치한다면 괜찮은데 SDK도 깔아야 하고...어쩌고 저쩌고...중얼중얼.. 하나씩 따로 떼서 설치하면 귀찮고 비효율적이라 그냥 안드로이드 개발 환경을 시간이 좀 걸리더라도 한 번에 설치하는 걸 추천한다.(쿨럭)

우선 SDK를 설치한다.

안드로이드 개발자 사이트 :http://developer.android.com/sdk/index.html

본인의 PC운영체제에 맞는 셋업파일을 다운로드 받은 뒤 다음 다음을 눌러 설치해주면 Android SDK Manager가 실행된다. 번들 프로그램 중 자동으로 설치되어 있는 것들은 필요한 것들이 모두 설치된 것이 아닌 최소한의 것이기 때문에 그냥 넘어가면 가끔 문제가 발생하기도 한다. 따라서 추가로 더 선택하여 설치해줘야 하며 이클립스 설치가 귀찮고 오래걸리는 이유는 바로 여기에 있다... 기본적으로 Tools와 Android 4.2.2(API 17) (이부분은 업데이트 되면서 조금 버전이 다를 수 있을 것), Android 2.3.3 (API 10), Extras 를 체크하고 패키지를 인스톨한다. 이상하게 나는 설치를 눌렀는데 설치가 안되고 넘어가져서 다시 설치를 몇번씩 반복해야 하는 경우가 생기더라.;; 아무튼 그렇게 설치를 완료한다.

 

3. apk에 서명을 하지 않으면 구글에 유료 어플로 등록이 불가능하다. 그래서 서명을 해야 하고, 서명을 할 수 있게 만드는 절차가 디컴파일과 빌드이다. 그걸 도와줄 툴이 바로 apktool이다. 

안드로이드 apktool 설치 링크

해당 링크로 이동해서 좌측의 apktool-install-windows-r04-brut1.tar.bz2 와 2011년 12월 8일에 업로드 된 apktool1.4.3.tar.bz2을 다운로드 받아준다. 둘다 한 폴더에 갖다 넣고 압축을 풀어준 다음 

 

 

요 세 녀석만 가져다 특정 폴더에 넣어주어야 한다. 나중에 커맨드 창에서 불러다 쓸 녀석들이기 때문에 불러들이기 쉬운 경로에 넣어야 한다. 이왕이면 D드라이브에, 폴더이름도 영어로 특수문자와 한글 없이 만들어서 넣는다. 서명 하고 싶은 apk 파일도 함께 넣어주는 것 잊지 말자.

 

 

해당 폴더를 shift + 우클릭으로 커맨드창을 호출한 뒤 디컴파일 명령어를 입력한다.

 

 apktool d apk file명 디컴파일 할 폴더명

ex) apktool d ktalk.apk ktalk_output


띄어쓰기, 오타 안나면 커맨드창이 말대꾸를 하기 시작한다. 그리고나면 아까 위의 세 녀석을 넣어줬던 그 경로 안에 폴더가 하나 생겨있다. 커맨드창에 적었던 명령어에 있던 디컴파일 할 폴더명일 것이다. 이까지 디컴파일이 완료되었다는 말씀.


폴더를 열어보면 dist, res, smali 세 개 폴더가 더 있다.


빌드 명령어를 입력한다. 내 경우는 ktalk라고 별칭을 정해줬으니 여러분은 자신이 정해놓은 별칭을 대입하면 된다. 

명령어 : apktool b ktalk_output 

그럼 또 커맨드창이 열심히 중얼거린 뒤에 build폴더를 생성시키고, dist 폴더 안에 apk를 생성해준다.


다음은 서명할 차례! keystore라고들 하죠..

이때 서명할 이름, 비밀번호를 잘 기억해두어야 한다. apk를 업데이트 할 경우, 기존에 했던 서명과 똑같은 이름과 비밀번호를 입력해줘야 하기 때문에 잊어버릴 경우 버리고 새로 만들....

서명 명령어 :

 keytool -genkey -alias euns -keyalg RSA -validity 20000 -keystore euns.keystore

띄어쓰기 지키시고 굵은 글씨 부분에는 본인이 서명할 이름을 넣어서 명령어를 작성한다. 명령어가 제대로 먹혔다면 비밀번호를 입력하라고 나온다.

안까먹으려면 그냥 서명할 이름과 비번을 똑같이 하거나 평소 커뮤니티에서 즐겨 사용하는 비번을 쓰는게 나음.. 한 번 더 입력하라고 하면 똑같은 비번을 한 번 더 쳐주고, 이름, 성, 조직 이름, 조직 단위 등을 쓰라고 계속 요구한다. 난 그냥 귀찮아서 서명 이름을 계속 갖다 넣어주고 구/군/시와 시/도 이름만 제대로 작성했다. 다 대답한 뒤에 아까 넣었던 비밀번호를 또 넣어주면 잠시 후 keystore가 생성된다.

 

처음엔 위 사진의 셋 뿐이었던 폴더에 이젠 여섯개가 나란히 있을 것이다. 저 keystore는 앞으로도 쓸 거니 잘 처박아두자.

 

 

다음으로 빌드를 끝낸 apk에 keystore를 씌운다.

명령어 : jarsigner -verbose -keystore d:\ktalk\ktalk.keystore d:\ktalk\ktalk_output\dist\ktalk.apk ktalk

 

keystore가 있는 경로

빌드된 apk가 있는 경로(바깥에 있는 apk 아니고 dist 폴더 안에 있는 apk) 


d띄어쓰기 틀리면 에러남. keystore이름 잘못쓰거나 경로 좀 틀려도 안됨.


커맨드창이 중얼거리는 말 끝에


signing: classes.dex
signing: resources.arsc

 

이런게 나오면 서명이 완료 됐다는 뜻이다.

 

된 건지 안 된건지 티가 안나서 이까지만 하면 헷갈릴 수 있다.

 

 

4. zip 정렬까지 해줘야 다 끝났다고 할 수 있다. 이제 아까 설치한 sdk를 써먹어 볼 수 있겠근...

안드로이드가 설치된 경로로 이동한다. 딱히 설치 경로를 건드리지 않았다면 C드라이브 안에 android 폴더가 있을 것이다.

 

 

위와 같이 tools 폴더까지 이동해주고 zipalign.exe 응용프로그램까지 도달해야 한다.

 

폴더를 한 단계 앞으로 빠져나와 shift + 마우스 우클릭을 해서 여기서 명령창 열기를 선택한다. 그럼 우리의 사랑스러운 커맨드 창이.

 


 

그런 다음 명령어를 실행시킨다.

zipalign -v 4 d:\ktalk\ktalk_output_dist\ktalk.apk d:\ktalk\ktalk_output_dist\kwtalk.apk

 

서명이 완료된 apk를 폴더 경로를 포함해서 지정해준다.

 

현재 이름과 중복되지 않은 이름으로 apk 이름을 지정하고 역시 폴더경로를 포함해준다. (이왕이면 같은 경로로 하는게 헷갈리지 않음.)

 

기존 apk이름과 변경할 apk이름 사이는 깜빡하지 말고 반드시 띄어쓰기 해줘야 한다.

 

몇 초 기다리면 서명한 apk 바로 아래에 zip정렬이 끝난 apk 파일이 생성된다.

 

 

5. 구글 마켓에 유료로 등록 가능한 어플로 탄생 가능.

 

 


 

구글 판매자 계정에서 오류메세지 보는게 아주 지긋지긋한 나머지 혼자 배움을 터득하는 중.....

 

은 득도st.


반응형