一、Gradle的生命周期
Settings.gradle : 初始化阶段--> 包含需要你构建其他的参与编译的gradle
builde.gradle : 配置阶段--> 解析所有build.gradle文件,把它转换为Gradle的Project的对象,分析Project的下面的Task任务之间的依赖关系,生成有向无环拓扑图
Task : 执行阶段--> 执行Task任务,Gradle会根据依赖决定哪些会被执行,以及执行顺序
this.beforeEvaluate{} : 开始配置前调用
this.afterEvaluate{} : 配置完成后调用
this.gradle.buildFinish{} : task执行完后调用
![](https://img.haomeiwen.com/i16293373/91741839d47f41a0.png)
二、project的相关api的讲解
getAllprojects : 获得项目中所有的project
getSubprojects : 获得项目中所有子的project
getParent : 获得当前的project父的project
getRootProject : 获取根结点的project
project('app' ) { } : 对app的project的工程进行修改
allprojects { } : 对当前工程的project和它所有的子project进行配置
subprojects { } : 只包含子工程进行配置
//在gradle配置时候就可以通过android2这个方法扩展参数
project.extensions : project.getExtensions();
//这个是在Piugin里面去写的东西
Android2 android2 = project.extensions.create("android2", Android2.class);
android2对象就可以调用上面配置的信息
下面是在build.gradle里面去写
android.getApplicationVariants().all { }
this.android.application.Variants (遍体): 它是遍历为什么版本 : debug、huidu 、release
三、属性的相关api的讲解
ext { } : 拓展属性,可以把变量全部定义在这个里面
在gradle.properties文件里面定义变量去使用
四、文件属性的相关api的详解
getRootDir().absolutePath : 获取根工程的目录
getBuildDir().absolutePath : 获取build的目录
getProjectDir().absolutePath : 获取当前project的目录
copy { from 源文件 into 目的文件} : 从源文件拷贝到目的文件
exclude : 排除库之间的冲突
transitive : 禁止传递依赖,默认为false
五、task常见使用属性
task.execute() : 执行某个task任务
inputs.property()、inputs.properties() : task的文件输入inputs
outputs : task的文件输出
六、task任务图的使用方法
![](https://img.haomeiwen.com/i16293373/8232ff4f9987fff2.png)
task的创建方式一
![](https://img.haomeiwen.com/i16293373/96ad682f14d25903.png)
task创建方式二
![](https://img.haomeiwen.com/i16293373/c2ea70542dc63d19.png)
task创建方式三
![](https://img.haomeiwen.com/i16293373/b24291dff8f02913.png)
doFirst和doLast的执行顺序
七、builde里面常用参数
buildConfigField : 在BuildConfig里面设置参数
productFlavors : 多渠道打包参数
sourceSet : 指定源码目录、资源目录
八、gradle去解析一个xml文件
1.创建XmlParser对象: def xmlparser = new XmlParser()
2.解析xml
文件: xmlparser.parse(xmlfile.xml)
字符串: xmlparser.parseText('<xml></xml>')
3.读取属性:使用groovy.util.Node.attribute('attribute')
九、远端依赖源码
1. setting.gradle加入
include':locatenavi'
project(':locatenavi').projectDir =new File('../../LocateProject/locate/locatenavi')
2. build.gradle加入依赖工程
implementation project(':locatenavi')
./gradlew :app(module名字):dependencies : 查看某块之间的依赖
网友评论