问题:
你想要在整体的构建过程中加入自定义的task。
解决方案:
使用dependOn属性将你的任务插入 directed acyclic graph
讨论:
在初始化阶段,Gradle将任务根据依赖集合成一个序列。结果就是一个DAG。举例子,Gradle记录为java插件生成一个DAG,如下图:
"directed"意味着每个依赖箭头只有一个方向。"Acyclic"意味着在图表中没有循环。
在主进程中增加自定义task意味着,在图表的合适位置插入你的任务。
4.1节的copyApks任务被定义用来将生成的apk复制到一个单独的目录下。为了简便这个任务被复用:
如果apk没有生成,这个任务没什么实际用处。assemble任务生成apk。如果将它作为copyApks任务的依赖:
对assembleDebug的依赖意味着在copy任务执行之前,debug APK会被生成。你可以使用assemble替代,这样你就是使用release的APK。
如果你想要在build的时候都运行copyApks任务,你可以将它作为build task的依赖。如:
现在运行build task也会将apks复制到单独的文件夹。你已经使用正确的信息将copyApks任务插入到DAG。
移除生成的apks目录下的所有apk也可以同样的方式。根目录下有个clean任务我们可以编辑:
delete任务接受一个files或者folders的列表,以做到更多的功能,很容易修改这个任务,如:
任何自定义的任务都可以通过这样的机制添加到build进程中。