안드로이드 어플리케이션을 릴리즈하기 위해서는 먼저 키(Keystore)를 생성하고, 릴리즈모드로 컴파일을 한후에 사인(Signing)을 해야합니다. 디버깅시에는 자동으로 디버그용 키가 생성되어 적용되지만, 릴리즈시에는 직접 처리를 해주어야 합니다.

개발자는 릴리즈 모드에서 사용되는 하나의 키를 생성하여 잘 관리하여야 합니다. 이것은 어플리케이션의 버전 업데이트를 문제없이 동작하는 것을 보장합니다. 만약 같은 키로 사인된 어플리케이션이 아닐 경우 업데이트가 되지 않습니다. 또한 같은 키를 사용하는 여러 어플리케이션이 서로 같은 키로 사인되어있다면 코드나 데이터도 공유가 가능하여 모듈화된 구조로 어플리케이션을 배포할 수 있습니다.

아래는 커맨드라인에서 처리하는 방법을 설명했지만 이클립스에서 더 쉽게 처리할 수 있습니다. http://www.androidpub.com/35445 글을 참고하세요.

키 생성 방법

$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000
10000일을 기한으로 my-release-key.keystore라는 이름으로 keystore를 생성합니다. alias_name은 나중에 어플리케이션을 사인할때 다시 사용하므로 잘 입력하여 줍니다. 명령어를 준 후 암호를 입력하고 적당히 정보를 입력하면 keystore가 생성됩니다.

사인 방법

이클립스의 Package Explorer에서 프로젝트 명에서 오른쪽 마우스를 클리하면 Android Tools가 있습니다. 거기서 Export Unsigned Application Package를 선택해서 원하는 디렉토리에 apk를 생성합니다.

$ jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name
이번에는 jarsigner라는 유틸리티를 통해 사인(Signing)을 합니다. 명령을 주고 암호를 입력하면 됩니다.

$ jarsigner -verify -verbose -certs my_application.apk
사인이 잘 되었는지 확인하실 수 있습니다.

키의 관리는 아주 중요합니다. keystore와 암호가 외부에 유출된다면 그것을 악용하여 어플리케이션을 망가뜨리고 유저 데이터를 훔쳐갈 수 있습니다. 그것은 개발자의 명성에 큰 흠집을 낼 수 있으니 절대적으로 관리에 주의를 기울여야 합니다.

관련문서 http://developer.android.com/guide/publishing/app-signing.html