最近跟gradle打交道比较多,tinker也用到了,然后混淆过程还有写一些脚本都需要用到gradle,所以零零碎碎记录一些gradle的知识点,不然经常去搜索很容易忘记,本文是方便自己后边查看,有写的不好的地方请勿见怪。
Gradle执行的时候遵循如下顺序
- 首先是解析settings.gradle来获取模块信息,这是初始化阶段
- 然后配置每个模块,配置的时候不会执行task
- 配置完成之后,有一个重要的回调project.afterEvaluate,这个表示所有模块配置完成,可以准备执行task了(可以配置多个afterEvaluate,那么执行顺序就相当于注册顺序)
- 执行指定的task
在settings.gradle中添加一个监听器
gradle.addBuildListener(new BuildListener(){
void buildStarted(Gradle gradle){} // 已经过时
void settingsEvaluated(Settings settings){}
void projectsLoaded(Gradle gradle){}
void projectsEvaluated(Gradle gradle){}
void buildFinished(BuildResult result){}
})
task clean(type:Delete)作用
这个方法的作用就是在clean任务执行之前或之后都能做一点我们自己需要做的事,比如说删除某个文件或者复制某个文件等等
task clean(type:Delete) {
delete rootProject.buildDir
doLast {
def file = new File('test.txt')
delete file
println '清理'
}
}
各个任务作用
其他小知识点
- 直接执行gradle tasks可以查看当前项目所有的task
- 编写一个task
task hello() {
println 'hello world'
doFirst {
println 'hello task doFirst'
}
doLast {
println 'hello task doLast'
}
}
然后执行gradlew task
- 渠道包和马甲包结合(https://blog.youkuaiyun.com/xfhy_/article/details/103517308)