首页 > 代码库 > Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task

问题:

你想要在整体的构建过程中加入自定义的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进程中。

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task