转载请注明出处:http://blog.csdn.net/forevercbb/article/details/80773839
IDE的存在使得Android项目的编译变得简单,只需要点击运行,编译安装都由IDE完成。那么项目从代码到APK之间,到底经历了什么。
- 打包资源文件,生成R.java
使用aapt工具,把xml格式的资源文件编译成二进制格式,assets、raw文件夹中的文件不作处理;赋予非assets文件id值,id值以常量形式保存在R.java中。生成resources.arsc文件,描述具有id值的资源的配置信息,相当于资源索引表。资源管理框架可以根据当前设备配置,通过id值和资源索引表快速查找匹配的资源文件。 - 处理aidl文件,生成java文件。
- 编译java文件
使用Java Compiler,把1、2生成的java文件和源码一起编译生成class文件。 - 把class文件(包括第三方依赖库的class文件)通过dex工具转换成dex文件
- 打包生成未签名的apk文件
把编译过的资源文件、dex文件、其它资源(如libs文件),合并成apk文件。 - 使用Jarsigner对apk进行签名。
- 使用zipalign对应用进行优化,减少其在设备上运行时的内存占用。