http://developer.android.com/tools/building/index.html


android project 는 .apk로 패키징 되는데 

.apk는 

클래스파일을 dalvik byte code로 변환한 .dex 파일과

AndroidManifest.xml 의 바이너리버전

컴파일된 리소스 resources.arsc 

컴파일되지 않은 리소스 파일이 들어있다 


빌드과정은


1. aapt (Asset Packaging Tool)

 - 리소스를 보고 R.java 생성

 - AndroidManifest.xml이나 XML파일들을 컴파일


2. aidl tool 

 - .aidl 파일을 java interfaces 로 만들어줌 


3. java compiler

 - aapt로 생성된 R.java, aidl로 생성된 java interfaces, 그리고 작성한 소스코드를

   컴파일해서 .class 파일로 만들어줌 


4. dex 

 - .class 파일들과 3rd party libraries 클래스파일들을 모두 .dex 파일로 만듬


5. apkbuilder

 - 1번에서 생성된 컴파일된 리소스와 4번에서 생성된 .dex 파일과 그외 리소스들을 패키징함

 - .apk 파일 생성


6. jarsigner 

 - debug 또는 release 용 keystore로 sign

 - sigend .apk가 됨 


7. zipalign (release mode) 

 - 릴리즈 모드로 sign하면 이거 zipalign 해야함



* proguard 는 3번과 4번 사이. 

proguard관련 링크

http://developer.android.com/tools/help/proguard.html

http://www.androidengineer.com/2010/07/optimizing-obfuscating-and-shrinking.html

http://code.google.com/p/maven-android-plugin/wiki/ProGuard

http://proguard.sourceforge.net/



* 여담

ant build 작성은 귀찮아 ㄷㄷ


Posted by 바나나쥬스