android构建系统的概述
所谓的android构建系统就是我们构建项目时所使用的工具的一个集合。包括测试,运行,打包app,整个构建系统可以作为android studio的一个集成工具使用,也可以在命令行中独立运行,我们可以使用构建系统的特点来:
- 定制,配置和拓展构建过程
- 为我们的app在同一个工程和模块构建不同的apk文件
通过源代码集实现代码的复用
android 构建系统的灵活性使得你可以实现以上三个功能而不用修改源代码。在android studio中是通过gradle.build来配置整个项目的构建
整个构建过程中涉及到许多工具和流程,来产生最终apk需要的临时文件。如果我们在android studio中开发,整个构建过程在我们为我们的项目或者模块run the Gradle build task。整个构建过程是非常灵活的,所以是非常有用的,然而了解在这个过程是非常有用的,这样我们就可以灵活的配置构建和拓展整个构建过程。
整个构建过程可以通过下面这张图片来描述:
整个构建系统合并了所有的配置了的product flavors中的资源,build type,和dependencies.如果不同的文件夹包含了相同名字的文件,覆盖的优先级是:dependencies覆盖build type,build type覆盖product flavor,product flavor 覆盖 代码路径
- AAPT(Android Asset Packaging Tool)管理我们应用的资源文件,例如AndroidManifest.xml文件,布局文件,并且编译他们,这样子就产生了一个R.java文件。
- aidl工具将任何.aidl接口转换为java接口
- java编译器将所有的java代码包括R.java和.aidl文件,编译成为.class文件输出
- dex工具将所有的.class文件转换为Dalvik的二进制编码,任何第三方库和.class文件在我们的模块中包含的,都会被打包进去.dex文件,这样子我们才能打包一个apk文件
- 所有的未编译的资源,编译过的资源和.dex文件被送到apkbuilder工具打包到最终的.apk文件中一个apk可以安装到一个设备中一定要有签名,debug签名或者release key
- 最后要使用一个叫做Zipalign的工具来优化整个apk,这样子我们的apk将使用更少的内存
注意点:app的方法数被限制的64K,因为最开始android的方法表的方法数定义为一个short
整个构建系统为每一个build flavor产生一个apk文件,存放在app/build 文件夹下的app/build/output/apk目录,文件名为app--.apk.例如app-full-release.apk,app-demo-debug.apk