Gradle执行顺序
来源:互联网 发布:紫金桥实时数据库 编辑:程序博客网 时间:2024/06/08 03:06
1
gradle的解析顺序:rootproject 的setting.gradle,然后是rootproject的build.gradle,然后是各个subproject。所以project下的build.gradle会先于app下的build.gradle。
2
在build.gradle中,我们可以通过apply plugin: 引入插件,也可以通过 apply from .gradle引入其他gradle脚本中的函数定义或task等
3
你说的check,clean实际是task,一般hook我们指的是gradle的生命周期:
在解析setting.gradle之后,开始解析build.gradle之前,这里如果要干些事情(更改build.gradle校本内容),可以写在
beforeEvaluate
举个例子,我们将我们的一个subproject中的apply plugin改掉,原来是一个library工程,我们希望它被当作application处理:
project.beforeEvaluate { // Change android plugin from `lib' to `application' dynamically // FIXME: Any better way without edit file? if (mBakBuildFile.exists()) { // With `tidyUp', should not reach here throw new Exception("Conflict buildFile, please delete file $mBakBuildFile or " + "${project.buildFile}") } def text = project.buildFile.text.replaceAll( 'com\\.android\\.library', 'com.android.application') project.buildFile.renameTo(mBakBuildFile) project.buildFile.write(text) }
在所有build.gradle解析完成后,开始执行task之前,此时所有的脚本已经解析完成,task,plugins等所有信息可以获取,task的依赖关系也已经生成,如果此时需要做一些事情,可以写在
afterEvaluate
project.afterEvaluate { // Set application id def manifest = new XmlParser().parse(project.android.sourceSets.main.manifestFile) project.android.defaultConfig.applicationId = manifest.@package }
每个task都可以定义doFirst,doLast,用于定义在此task执行之前或之后执行的代码
project.assemble.doLast { println "assemble finish" }project.assemble.doFirst { println "assemble start" }
1 0
- Gradle执行顺序
- 关于gradle 的 执行顺序
- 执行顺序
- 执行顺序
- 执行计划执行顺序
- gradle 执行 shell 命令
- Gradle tip #3-Task顺序
- Gradle tip #3-Task顺序
- Gradle tip #3-Task顺序
- 函数执行顺序 打印顺序
- 执行计划和执行顺序
- ajax 同步执行(顺序执行)
- AsyncTask执行顺序,并发执行。
- 执行计划显示执行顺序
- gradle打包 执行类方法
- button的执行顺序
- Unix命令执行顺序
- 命令执行顺序
- Huffman编码实现(详细实现)
- WCF
- Unix下共有五种I/O模型
- github搜索技巧
- mfc textout输出字体设置
- Gradle执行顺序
- CC3200 与 CC2530的SPI通信
- 设计模式与7大原则
- JSP技术
- sendto、WSASendto,recvfrom、WSARecvfrom 区别?
- webcollector 初探(一)
- Android中Fragment生命周期详解
- Segment 快速乘(二进制模拟乘)类似于快速
- Android Theme的使用