play_logo_x2 안드로이드 마켓-구글 플레이에 앱을 등록하려면, singing이 필요합니다.
(앱 스토어도 마찬가지 입니다. 애플 앱은 xcode에서 관리하는 것이 진리~^^)

왜 싸이닝을 할까요?
sign이라는 것은 고유함-인증했음을 증명하는 행위입니다.

앱을 구별짓는 id 가 있지만, 누구든 id를 지정하여 앱을 만들 수 있습니다. 따라서 그 고유성은 id로만 분별하기에는 무리가 있죠.

따라서, 자신만의 고유한 key값으로 앱을 signing 합니다.

이렇게 되면, 앱을 업데이트할 때에도, 항상 같은 key로 싸인을 함으로써, 고유한 인증임을 확인할 수 있습니다.

따라서~! key를 저장한 keystore 파일을 분실해 버리면~! ㅠㅠ 절대로 같은 앱을 업데이트 할 수 없습니다. (이렇때는, 그냥 새로 올려야죠.. ㅎ)

내가 올린 앱이나 아니냐의 문제가 아니라, 고유한 key로 싸인된 앱 만이 이전앱의 업그레이드 버전임을 증명할 수 있습니다.

두서없이, 서두가 길었네요.. ㅋ

HTML5 CSS3 JS 저는, HTML5를 이용한 웹앱을 만들다 보니, 이클립스를 사용하지 않고, 커맨드 라인에서 처리하는 방법이 있었으면 좋겠다 생각했습니다. 으리 구글링~ 갑~!

개발은 sublime/brackets 에서 패킹 및 싸이닝은 커맨드 라인에서~^^

cordova CLI를 사용하면, unsigned apk를 쉽게 만들 수 있는데, signing만 하자고, 소스를 이클립스에서 열어서, signed 를 export하는 것이 꽤나 부담이 됩니다.

apk 사인하는 GUI툴들도 있는데, 시원치 않고 GUI는 반자동화하기에는 무리가 있습니다.

하지만, CLI가 가능하다면, 자동화도 가능하고, text파일로 메모후 적용하는 것도 훨씬 간편하고 좋습니다.

준비물:

release unsigned ape 파일, android SDK(당연히..), JDK(대부분 설치되어 있죠)

명령어:

jarsigner -verbose -keystore jewonagency.keystore release-unsigned.apk jewonagency
zipalign -f -v 4 release-unsigned.apk release-signed.apk

설명:

jarsigner -verbose -keystore (keystore 파일) (unsigned apk 파일) (alias name)
unsigned 된 apk파일을 keystore 파일을 이용하여 signing 합니다. (alias name)은 keystore안에 저장된 해당하는 앱을 위한 이름입니다.

zipalign -f -v 4 (input file) (output file)
apk파일이 사실은 zip파일인데, apk 형식(?)에 맞게 재 정렬/정리해주는 과정입니다. 여기에서 나온 out file을 마켓에 등록하면 됩니다.
-f는 overwrite 옵션입니다. 4는 4 byte로 정렬한다는 옵션입니다.

커맨드 명령어 처음에 찾고 파라미터 최적화하는데 시간이 조금 소요되지만, 한번 맛들리면, 커맨드 라인만 쓰게 됩니다. ㅋ

게다가 osx는 linux 기반이다보니, 할 수 있는 일도 많아 더 자주 쓰게 되네요~

교정이 필요한 부분 있으면 언제든 의견주세요~^^