编译 Task
总体Task
编译执行的过程是一个个Task执行的过程,是gradle最核心的功能执行者,添加插件会给工程自动添加一系列的Task,apply plugin ‘java’ 和 apply plugin ‘android’ 都会默默的给工程加上一些Task,下面是比较重要也比较常用的Task:
- assemble
- check
- build
- clean
assemble是产出产品的,check是检查的,build是前面两个加起来,clean是清理工程产出的。assemble check build都不做事,都是调用别的task做事,这么做是有好处的,相当于接口,不同工程,不同插件都会有不同的实现,但接口是一样的,直接调用就行,gradle会自动连接,比如用了findbugs插件,会有许多新的check task,他们会被依赖到check下面。
使用 gradle tasks 可以看到比较高层的task 使用 gradle tasks --all 可以看到所有task的依赖关系
gradle会自动监视task的输入输出,这是为了增量式构建,如果输入输出没变的话说明这个task不用再执行。
android工程编译后至少产生两个包,debug APK 和 release APK ,是因为assemble Task执行后会产生这两个包,所以assemble Task 至少依赖两个Task assembleDebug 和 assembleRelease 同时这两个Task又依赖其他一些编译apk所需的Task。
gradle 的命令行能使用简写 比如 gradle aR 和 gradle assembleRelease是一样的,但是得是其他Task不会造成歧义才行,有两个Task都符合这个命令的话就不行。
Android plugin 提供了很多DSL让你来自定义android 的编译过程