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

相關文章
相關標籤/搜索