Android2011. 4. 22. 12:21

개요
안드로이드 애플리케이션은 빌드가 되면 apk파일로 압축된 바이너리파일로 만들어진다.
apk는 Dalvic byte code로 변환된 자바클래스파일인 dex file들, 바이너리버전의 AndroidManifest.xml, 컴파일된 리소스파일들(resources.arsc)와 컴파일되지 않는 리소스파일들로 구성된다.
 
이클립스에서 개발한다면 ADT 플러그인이 자동으로 관리한다.
이클립스가 아닌 개발환경에서는 프로젝트 디렉토리상의 build.xml을 이용하여 Ant로 빌드할 수 있다.

에뮬레이터나 디바이스에서 동작시키려면 애플리케이션을 반드시 signing해야 한다. 이클립스와 앤트를 이용하여 이 과정도 쉽게 할 수 있다.

다음 그림은 빌드와 실행까지의 과정을 보여준다.
 
빌드프로세스의 상세

빌드프로세스에는 많은 툴들과 프로세스들이 apk파일을 만들기 위해 임시파일들을 생성하게 된다. 이클립스를 사용중이라면 모든 빌드프로세스가 코드를 저장하는 순간 이 과정이 자동으로 이루어진다. 다른 IDE를 사용한다면 이 과정들이 ANT build script가 수행되는 순간 이루어진다. 




일반적인 빌드 프로세스는 아래의 순서로 이루어진다.

1. Android Asset Packaging Tool(aapt)가 애플리케이션의 리소스파일들(AndroidManifest.xml, other XML files)들을 수집하여 컴파일하여 R.java파일을 만들어낸다. 이 파일은 자바코드로 추가되어 컴파일하는데 레퍼런스로 사용된다.
2. aidl tool은 .aidl파일들을 찾아서 모두 java파일로 변환 생성한다.
3. 모든 자바코드, R.java, .aidl파일들이 자바컴파일러에 의해 컴파일되어 .class파일들을 만들어낸다.
4. dex tool이 class파일들을  .dex파일로 변환한다. 3rd party library와 프로젝트에 포함된 모든 .class파일들도 함께 .dex로 변환된다.
5. 모든 컴파일되지 않는 리소스들(이미지등..), 컴파일된 리소스들 그리고 .dex 파일들이 apkbuilder tool에 의해 .apk파일로 패키징된다.
6. .apk파일이 한번 빌드되면, 디버그나 릴리즈 키스토어로 반드시 사인되어야 한다. 그래야 디바이스에 설치가 된다.
7. 최종적으로 릴리즈모드로 사인되었다면 zipalign으로 align을 해야 한다. aligning은 애플리케이션이 디바이스에서 동작할 때
메모리 사용량을 최소한으로 줄여준다.

Posted by 삼스