家资是何物,积帙列梁梠。这篇文章主要讲述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的列表,以做到更多的功能,很容易修改这个任务,如:
文章图片
【Android开发(《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task)】任何自定义的任务都可以通过这样的机制添加到build进程中。
推荐阅读
- Android中的多线程开源框架
- Android Gradle插件(plugin)版本(version)与GradleSDK Build Tools版本关系
- ANDROID-漂浮背景效果
- React Native在Android平台运行gif的解决方法
- 直播技术总结ijkplayer的编译到Android平台并测试解码库
- PHP SplDoublyLinkedList offsetUnset()函数用法示例
- 文件管理器的作用是什么()
- find_elements_by_link_text()驱动程序方法– Selenium Python
- GOCC18(2020年Google在线编码挑战赛-新毕业生(印度))