Android studio【idea】

Android工程gradle顺序

2019-07-20  本文已影响47人  gczxbb

Android工程gradle顺序

Android项目,构建脚本是Gradle,基于Groovy语言,构建过程就是执行一系列Task任务的过程。每个工程由多个Task组成,Task代表一个构建原子操作,如编译,打包,任务之间存在顺序和依赖。

Android工程gradle顺序

入口,settings.gradle文件,include,引入多个编译模块。
顶层build.gradle文件。
每个模块下projects的build.gradle文件。

Android过程包括多个build.gradle文件,分别位于工程顶层目录和模块下。构建时,运行gradle命令,从当前目录下寻找build.gradle文件来执行构建。
不管是顶层build.gradle文件,还是模块build.gradle文件,buildscript代码块,首先执行。

buildscript {
    //Repository是文件的集合,这些文件通过group、name和version组织起来。
    //在使用上,主要体现为jar和xml文件
    //gradle不设置默认仓库,它支持多种仓库,maven,通过文件或http访问
    //repositories{}表示代码仓库的下载来源。
    //gradle仓库,工程支持多个仓库。
    //gradle,按照文件中仓库的顺序寻找所需依赖文件,如jar包,若某个仓库找到了,就不会再其他仓库寻找
    repositories {
        jcenter()
        google()
        //mavenLocal() //本地库,local repository(${user.home}/.m2/repository)
        mavenCentral()//Maven中心库(http://repo1.maven.org/maven2)
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

buildscript代码块,是为Gradle脚本自身的执行,需要使用的资源,获取脚本依赖插件,在脚本中使用一些第三方插件,类库等,需要手动添加这些插件类库的引用。它们不是直接服务于Android项目,而是支持其他build脚本的运行,因此,在buildscript代码块首先加载。

当执行完buildscript代码块,开始顺序执行gradle文件中的脚本代码,不带<<的任务,属于自动执行任务,立即执行。

在顶层build.gradle文件,allprojects代码块,会执行多次,对应引入的每个module都执行一次,repositories代码指定所有参与构建的项目使用的仓库来源。

//从工程顶层目录开始,include的每个模块,都会执行一次allprojects的内容。
allprojects {
    repositories {
        google()
        jcenter()
    }
}

gradle文件执行时,遇到apply from: xxx.gradle,先把引入的xxx.gradle执行完,再回到原gradle文件执行,当一个gradle文件过大时,可以拆分,apply from方式引入执行。


任重而道远

上一篇下一篇

猜你喜欢

热点阅读