Android gradle 的 哲学

一.gradle 是什么?

  首先明确一点,gradle 只是一个构建工具而已,并非一门语言。

  它采用了 Groovy 这个语言,创造了一种DSL,但它自己不是语言。java

二.怎么构建?

   那么,gradle是如何构建咱们的Android 应用呢? gradle 是按照必定的 gradle的规则去执行的,好比咱们Android Studio里面的build.gradle,setting.gradle,gradle-wrapper.gradle ,前提是要遵循Groovy语法。api

三.构建思想

  闭包: 至关于能够被传递的代码块。闭包

四. buildType 和 productFlavors

  • buildType 主要就是配置发布版本和测试版本的一些配置以及混淆文件app

  • productFlavors 用来作多渠道打包等操做会用到工具

五. compile,implementationapi

  • implementation : 不会传递依赖测试

  • compileapi : 会传递依赖; api 和 是 compile 的替代品gradle

  • 当依赖被传递时,二级依赖的改动会致使 0 级项目从新编译ui

  • 当依赖的改动不会致使0级项目从新编译lua

六.task

  • 使用方法: ./gradlew taskName
  • task 的结构
task taskName{
// 普通代码块代码:
{
在task 建立过程当中就会被执行,发生在 `configuration`阶段
}

doFirst{
task 代码
}

doLast {
task 代码
}
}
复制代码
  1. doFirst() 和 doLast() : 在 task 执行过程当中被执行,发生在 execution 阶段.若是用户没有直接或间接执行 task ,那么 doFirst() 和 doLast()代码不会执行spa

  2. doFirst() 和 doLast() 都是 task 代码,其中doFirst() 是往前面插入代码,doLast()是往队列后面插入代码

  3. task 依赖: task taskA(denpendsOn : b) 的形式来指定依赖。指定依赖后,task 会在本身执行前先执行本身的task。

七.project Structure

  • Project : build.gradle

  • Project: 由 setting.gradle 配置多个

  • 查找 setting.gradle 的顺序

    • 当前目录

    • 兄弟目录 master

    • 父目录

八. gradle 执行生命周期

三个阶段:

  1. 初始化阶段: 执行 setting.gradle ,肯定主 project 和 子project

  2. 定义阶段: 执行每一个projectbuild.gradle ,肯定出全部的 task 所组成的有向无环图

  3. 执行阶段:: 按照上一阶段肯定出的有向五环图来执行指定的 task

  在阶段之间插入代码:

  • 一二阶段之间

    • setting.gradle 的最后
    • 二三阶段之间
    afterEvaluate{
       // 插入代码
    }
    复制代码

    九. 感谢

    HenCoder

相关文章
相关标签/搜索