오래전에 정리해 놓았던 글입니다. 지금은 생산적인 방법이 있을 수도 있고, 내용이 약간 다른 부분이 있을 수 있고, 파라미터의 변형이 있을 수도 있습니다. 그런데, 기본적인 접근 방법은 같습니다. 또한, 이렇게 커맨드라인으로 사이닝할 수 있다는 것을 알아두면 접근하는 시각이 달라질 것이라 생각하여, 일단 블로그에 올립니다.
- 아래 내용 -
안드로이드 마켓-구글 플레이에 앱을 등록하려면, singing이 필요합니다.
앱 스토어도 마찬가지 입니다. 애플 앱은 xcode에서 관리하는 것이 편리합니다.
왜 싸이닝을 할까요?
sign이라는 것은 고유함-인증했음을 증명하는 행위입니다.
앱을 구별짓는 id 가 있지만, 누구든 id를 지정하여 앱을 만들 수 있습니다. 따라서 그 고유성은 id로만 분별하기에는 무리가 있죠.
따라서, 자신만의 고유한 key값으로 앱을 signing 합니다.
이렇게 되면, 앱을 업데이트할 때에도, 항상 같은 key로 싸인을 함으로써, 고유한 인증임을 확인할 수 있습니다.
따라서~! key를 저장한 keystore 파일을 분실해 버리면~! 절대로 같은 앱을 업데이트 할 수 없습니다. (이렇때는, 그냥 새로 올려야죠..)
keystore는 꼭 "소산"해서 저장해 놓으세요!!
저는 icloud, evernote, google drive에 소산중입니다.
내가 올린 앱이나 아니냐의 문제가 아니라, 고유한 key로 싸인된 앱 만이 이전앱의 업그레이드 버전임을 증명할 수 있습니다.
저는, HTML5를 이용한 웹앱을 만들다 보니, 이클립스를 사용하지 않고, 커맨드 라인에서 처리하는 방법이 있었으면 좋겠다 생각했습니다.
cordova CLI를 사용하면, unsigned apk를 쉽게 만들 수 있는데, signing만 하자고, 소스를 이클립스에서 열어서, signed 를 export하는 것이 꽤나 부담이 됩니다.
apk 사인하는 GUI툴들도 있는데, 시원치 않고 GUI는 반자동화하기에는 무리가 있습니다.
하지만, CLI가 가능하다면, 자동화도 가능하고, text파일로 메모후 적용하는 것도 훨씬 간편하고 좋습니다.
준비물: release unsigned apk 파일, android SDK(당연히..), JDK(대부분 설치되어 있죠)
명령어:
jarsigner -verbose -keystore bytenecleus.keystore release-unsigned.apk bytenecleus
zipalign -f -v 4 release-unsigned.apk release-signed-align.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 기반이다보니, 할 수 있는 일도 많아 더 자주 쓰게 되네요.
*추가정보 아래:
암호화
Version 3
RSA 2048 bits
SHA 256 WITH RSA
유효기간 설정 편의를 위해 길게 잡음. 장단점존재.
-----
감사합니다.
'IT일반' 카테고리의 다른 글
각 카메라 렌즈 브랜드별 이미지 안정화 기술 명칭 (0) | 2023.06.20 |
---|---|
DIV 상하 좌우 중앙 정렬하는 CSS (0) | 2023.06.19 |
The Pretotyping Manifesto 프리토타이핑 선언문 (0) | 2023.06.19 |
패스워드 만료기간 설정하는 방법 (linux) (0) | 2023.06.17 |
Html에서 가운뎃점 middle dot 쉽게 찍는 방법 (0) | 2023.06.16 |