Android2011. 4. 22. 14:30

Ant build script로 애플리케이션을 빌드하는 방법은 debug mode와 release mode가 있다.
어떤 방법을 사용하던간에 애뮬레이터나 디바이스에서 동작시키려면 signing을 해야 한다.

debug mode로 빌드시 Ant는 debug key로 자동으로 sign한다. 따라서 애뮬이나 디바이스에서 구동 가능하다. 하지만 배포는 불가하다. 릴리즈모드로 빌드하면 unsigned apk 가 만들어진다. 따라서 반드시 private key로 keytool과 jarsigner로 sign해야 한다.

Ant가 설치되어 있지 않다면 Apache Ant home page로부터 설치를 해야 한다. 그리고 실행경로를 설정해야 한다. JAVA_HOME환경변수가 JDK가 설치된 경로를 지정하고 있어야 한다.

윈도우에서는 JDK가  "Program FIles"폴더에 설치되는데 공백때문에 오류가 날수 있으므로 아래와 같이 정의한다.
set JAVA_HOME=c:\Progra~1\Java\<jdkdir>

debug mode로 빌드하는 방법은 프로젝트의 루트위치에서 아래 명령만 치면 된다.

ant debug

이 명령은 bin/ 위치에 여러분의 애플리케이션 .apk파일을 만들어준다. 이 파일은 애뮬이나 디바이스에 바로 설치 및 디버깅이 가능하다.

소스가 변경될 때 마다 이 명령을 수행하여 재빌드한다.

release mode로 빌드하는 방법은 프로젝트의 루트위치에서 아래 명령만 치면 된다.

ant release

이 명령으로 생성된 .apk file은 unsigned apk이다.
따라서 signing과 zipalign을 추가로 해주어야 한다. 이 과정까지 마치면 배포를 위한 준비를 마친게 된다.

원한다면 Android build script가 자동으로 sign하고 align하도록 할 수 있다. keystore와 key alias를 build.properties 파일에 기술하면된다. 이 정보가 존재하면 빌드스크립트는 keystore와 alias password를 입력하는 화면이 나오게 된다.

주의 : Ant가 입력을 다룰수 있기 때문에 빌드프로세싱중 패스워드가 화면에 보여질수 있다. 이게 거슬린다면 매뉴얼로 signing하는것이 좋다. manual로 signing하는것 대신에 unsigned로 빌드 후 signing을 별도로 하면된다.

build.properties에는 아래와 같이 keystore와 alias name을 지정할 수 있다.

key.store=path/to/my.keystore
key.alias=mykeystore

위와 같이 한 수 재빌드하면 sign된 릴리즈모드 apk가 만들어진다.

빌드를 완전히 자동화할 목적으로 사용하고자 한다면 signing중에 password입력 프롬프트가 뜨는것을 부담스러워 할 수 있다.
이 때는 수동으로 해야 하는데 jarsigner에서 수동으로 password를 지정할 수 있다. 위에서 기술한 build.properties방식으로는 동작하지 않으므로 별도로 매뉴얼로 수행해야 한다.

jarsigner -verbose \
             -keystore my-release-key.keystore  \   <- keystore file의 full path
             -storepass 1234 \        <- keystore의 password
             myapp.apk \                <- unsigned apk
             myalias_name                   <- keystore의 alias name

위의 예처럼 하면 프롬프트 없이 signing이 완료된다.



 
Posted by 삼스