2015년 4월 21일 화요일

Android : 수동으로 APK 파일 Signing 하기 (Signing Your App Manually/Export Unsiged Application Package)

#Signing Your App Manually
: 공개된 Unsigned APK 파일을  가지고와서 개발 프로젝트에 삽입해서 사용할때 이용한다. 
: jarsigner.exe (*JDK 1.8)



예제)
e:\>jarsigner -verbose -keystore e:\_keystore\ttt_keystore e:\AndExplorer.apk tingcup


Enter Passphrase for keystore:
jarsigner: Certificate chain not found for: tingcup.  tingcup must reference a v
alid KeyStore key entry containing a private key and corresponding public key ce
rtificate chain.


* 해결책 :  생성된 keystore의 키이름(aliasing)이 잘못되어 있음 -->> tingcup > tincup


* aliasing(KEY 이름) 확인 : 

e:\>keytool -keystore e:\_keystore\ttt_keystore -list -v
키 저장소 비밀번호 입력:

키 저장소 유형: JKS
키 저장소 제공자: SUN

키 저장소에 1개의 항목이 포함되어 있습니다.

별칭 이름: tincup
생성 날짜: 2014. 1. 27
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=LEE
발행자: CN=LEE
.............
....



>>>> APK Signing Command 수정
jarsigner -verbose -keystore e:\_keystore\ttt_keystore e:\AndExplorer.apk tincup




#################################################################################################

참고 : 

* keystore란? (출처 : 커니의 안드로이드 이야기)

 어플리케이션 서명을 위해 사용하는 수단으로, 자신의 '서명'이라 할 수 있다. 서명은 'key'로 하게 되며, keystore는 서명을 할 수 있는 key들을 담을 수 있는 파일을 뜻한다. IDE를 통한 개발시 기본으로 디버그용 키를 사용하여 어플리케이션 패키지를 서명하게 되며, Google play store 등 외부로 어플리케이션을 배포할 때는 자신의 키를 사용하여 배포해야 한다. (배포 후 키를 잃어버리면 업데이트가 불가능하다!)



* 왜 서명이 필요한가?

 악의적인 목적으로 리패키징 된 apk를 구분하기 위해서다. 어플리케이션을 배포할 때 apk로 패키징하게 되는데 이 때, 누가 패키징 했는지 정보를 기록하는게 서명 작업이다.


* signing에 대한 참고 자료

댓글 없음:

댓글 쓰기