美文网首页
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