-
闭包
:简单理解就是需要传递给方法入参的一段代码块,在Java里我们都知道传递给方法的都是特定的值或者应用(lambda
和匿名类
除外),而闭包的存在则可以让我们在传值之外可以传递一段代码块,这样我们在方法内部可以直接调用这段代码块。闭包和非闭包的区别就是传递给方法的是执行过程还是执行结果。// 以下两种写法是一致的,把括号去掉同时和闭包代码块保持一个空格的距离就是Groovy的方法调用 // 闭包写法 defaultConfig { minSdkVersion 15 } // 非闭包写法 defaultConfig ({ minSdkVesion 15 })
-
主项目
build.gradle
结构buildscript { // 这个repositories是给各个plugin来使用的,例如“apply plugin: 'com.android.application'” repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.0' } } //这个repositories是给各个project下的dependencies使用 allprojects { repositories { google() jcenter() } }
-
implementation
和api
的区别
implementation
:多个Module
存在连续依赖情况下,顶层Module
发生改动的时候,底层Module
编译的时候不重新编译,同时顶层的Module
对最底层的依赖不可见,底层是无法直接调用顶层Module
的方法的。
api
:多个Module
存在连续依赖情况下,顶层Module
发生改动的时候,依赖链上的Module
全部重新编译。
总结:从效率和安全性而言,implementation
无疑是最适合项目开发的。
-
GradleWrapper
:Gradle的包装工具,保证项目gradle版本一致性,配合gradlew
脚本使用。-
结构
distributionBase
:Gradle下载后的存储位置
distributionPath
distributionUrl
:Gradle的下载地址
zipStoreBase
zipStorePath
-
GradleWrapper
执行顺序1.首先找当前目录是否有
setting.gradle
文件。
2.1找不到的话,去同级目录看是否有master
目录,并在其内部寻找setting.gradle
文件。
3.2找不到的话去父目录寻找setting.gradle
文件 -
Gradle生命周期
1.初始化阶段:寻找工程
父Project
和子Project
。
2.评估阶段:寻找各个Task
的依赖图。
3.执行阶段(afterEvaluate
)
-
网友评论