缩短网址做钓鱼网站,如何确保网站安全,中国万网登录入口,用thinksns做的网站来到这里的是不是都有以下疑问#xff1a;
1.build.gradle配置文件结构好复杂啊#xff0c;怎么记#xff1f;
2.内部是怎么进行分析和执行的#xff1f;
3.为什么可以在配置文件里面写groovy代码#xff0c;怎么识别的#xff1f;
4.怎么才能很方便的记住和快速上手…来到这里的是不是都有以下疑问
1.build.gradle配置文件结构好复杂啊怎么记
2.内部是怎么进行分析和执行的
3.为什么可以在配置文件里面写groovy代码怎么识别的
4.怎么才能很方便的记住和快速上手gradle呢
好的现在我带着你们的疑问使用groovy代码的方式慢慢解开build.grade神秘的面纱探索其中的奥妙
声明不要急我们慢慢深入请耐心看完
首先我们先看一段groovy代码 def dependencies {println(我执行了)}dependencies()
执行结果 这断代码就是一个无参方法声明和调用是不是非常简单。
现在我们进一步改造
代码 def dependencies {int a, int b -println(我执行了 a b)}dependencies(1, 2) 执行结果 我这次只是加了两个整型参数进行打印。
好的我们再次深入改造
代码 def dependencies {int a, int b, Closure c -println( ab)c.call()}dependencies(1, 2){println(我执行了)} 执行结果 卧槽什么鬼竟然也行
重要先看这部分代码 dependencies(1, 2){println(我执行了)}
这部分代码起始可以看成是两部分
1. 执行函数部分dependencies(1, 2) 2.回调函数逻辑实现部分
{println(我执行了)
} 当我们执行
dependencies(1, 2){println(我执行了)
}
这段代码时实际执行流程就是将
{println(我执行了)
}这部分代码生成回调函数由Closure对象的call函数进行执行回调 然后真正执行函数dependencies然后执行Closure.call执行回调逻辑。
以上都看明白了现在我们真正进入主题
以gradle配置文件为例子如下
dependencies {implementation com.google.android.material:material:1.4.0implementation androidx.constraintlayout:constraintlayout:2.0.4testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.3androidTestImplementation androidx.test.espresso:espresso-core:3.4.0
}
此时你有该蒙蔽了
implementation com.google.android.material:material:1.4.0是什么意思啊你上面没有说啊
那好我们现在说其实方法调用还有另一种方式
方法名称 参数1[,参数2]
就拿前面举得例子
代码 def dependencies {a -println(结果: a)}dependencies 100
执行结果: 和dependencies(100)效果是一样的
那好现在明白了原来implementation、testImplementation、androidTestImplementation 其实就是内置函数哈。
implementation com.google.android.material:material:1.4.0implementation androidx.constraintlayout:constraintlayout:2.0.4testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.3androidTestImplementation androidx.test.espresso:espresso-core:3.4.0
这些其实都是在调用函数哈
dependencies {implementation com.google.android.material:material:1.4.0implementation androidx.constraintlayout:constraintlayout:2.0.4testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.3androidTestImplementation androidx.test.espresso:espresso-core:3.4.0
}
那好现在我就按照这个配置文件整体实现一下代码。
代码 def implementation {arg -println(引入接口依赖 arg)};def testImplementation {arg -println(引入测试接口依赖: arg)};def androidTestImplementation {arg -println(引入安卓测试接口依赖: arg)}def dependencies {Closure c -c.call()}dependencies{implementation com.google.android.material:material:1.4.0implementation androidx.constraintlayout:constraintlayout:2.0.4testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.3androidTestImplementation androidx.test.espresso:espresso-core:3.4.0}
执行结果 恍然大悟原来build.gradle配置文件其实就是在执行各种函数。 应当随时学习,学习一切;应该集中全力,以求知道得更多,知道一切