美文网首页
Gradle语法

Gradle语法

作者: 冷师傅_ | 来源:发表于2019-06-09 13:02 被阅读0次
    • 闭包:简单理解就是需要传递给方法入参的一段代码块,在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()
          }
      }
      
    • implementationapi的区别

    implementation:多个Module存在连续依赖情况下,顶层Module发生改动的时候,底层Module编译的时候不重新编译,同时顶层的Module对最底层的依赖不可见,底层是无法直接调用顶层Module的方法的。
    api:多个Module存在连续依赖情况下,顶层Module发生改动的时候,依赖链上的Module全部重新编译。
    总结:从效率和安全性而言,implementation无疑是最适合项目开发的。

    • GradleWrapper:Gradle的包装工具,保证项目gradle版本一致性,配合gradlew脚本使用。

      • 结构

        distributionBase:Gradle下载后的存储位置
        distributionPath
        distributionUrl:Gradle的下载地址
        zipStoreBase
        zipStorePath

        gradlewrapper结构.png
      • GradleWrapper执行顺序

        1.首先找当前目录是否有setting.gradle文件。
        2.1找不到的话,去同级目录看是否有master目录,并在其内部寻找setting.gradle文件。
        3.2找不到的话去父目录寻找setting.gradle文件

      • Gradle生命周期

        1.初始化阶段:寻找工程父Project子Project
        2.评估阶段:寻找各个Task的依赖图。
        3.执行阶段(afterEvaluate)

    相关文章

      网友评论

          本文标题:Gradle语法

          本文链接:https://www.haomeiwen.com/subject/kwkixctx.html