출처: http://sunphiz.me/wp/archives/114
Android는 keystore를 이용해 개발자 자신의 앱을 signing 한다.
그런데, 이미 1.0을 release했는데 업데이트가 잘 되는지 궁금 할때 처럼,
기존 자신의 app을 지우지 않은 채 설치(정확히는 update)를 하며 테스트를 해야할 때가 있다.
이때, 매번 export 메뉴를 이용해 내 keystore를 지정, signing을 하는 번거로운 작업을 반복 해야할까?
이 때는, debug용 keystore를 추가로 만들면 된다.
Eclipse ADT를 이용해 개발할 때에는 기본적으로 범용 debug.keystore가 들어있다.
이 keystore를 대신할 keystore를 만드는 것이다. 방법은 간단하다.
release keystore를 이용해 나만의 debug용 keystore를 만든 후
“Preference > Android > Build > Custom debug keystore”에서 만든 debug용 keystore로 바꿔주면 된다.
이렇게 하면 매번 export하지 않고 “Run As > Android Application”을 통해
app을 계속 설치할 때 INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 에러를 안 볼 수 있다.
명령어는 다음과 같다.
예제는 다음과 같다.
아니, 왜 비번이 “android”인가? 위에서 언급한 IDE 안의 keystore는 자동으로 생성된다.
그리고 이 keystore를 이용해 signing할 때마다 비밀번호를 입력하는 번거로운 작업이 필요하다.
이를 IDE가 대신 해주는데, 비번을 고정해서 사용하고 있는 거다.
“android”로, 그래서 그에 맞추어 비번을 바꿔줘야 IDE를 통한 빌드를 사용할 수 있다.
그럼 debug용 키와 release용 키는 어디가 같고 어디가 다른걸까?
간단히 말하면 핑거프린트(fingerprint)가 같다. 그리고 위에서 수정한대로 비밀번호와 알리아스(alias)가 다르다.
fingerprint가 뭔지 궁금하다면 다른 글을 참조하자.
참, keytool은 안드로이드 SDK가 아니라 JDK(Java Development Kit) 안에 들어있다.
keystore가 안드로이드에서 유용하게 쓰이지만, 원래는 Java에서 지원하는 기능이라 그렇다.
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌_Android] 시스템 설정의 폰트크기 에 따라 웹뷰(WebView)의 레이아웃이 변경되는 경우 (Lollipop 이슈) (0) | 2015.05.07 |
---|---|
[펌] GLSurfaceView 커밋 읽기 (0) | 2015.05.01 |
ANDROID API 18에서 STARTFOREGROUND() (0) | 2015.04.20 |
어떤 KEYSTORE로 SIGN되었는지 확인하는 방법 (0) | 2015.04.20 |
[펌] Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance (0) | 2015.04.17 |