Android工程gradle顺序

作者: gczxbb | 来源:发表于2019-07-20 23:40 被阅读47次

    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方式引入执行。


    任重而道远

    相关文章

      网友评论

        本文标题:Android工程gradle顺序

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