Gradle 入門到精通(二)

前言

根據前一篇我們學習了gradle的基礎知識和項目結構,我們知道了一個內容,就是android 的項目使用的是gradle進行項目管理,項目中最重要的就是build.gradle setting.gradle。如果需要了解gradle的內容,就需要了解gradle的執行流程,也就是gradle的生命週期。

6 gradle生命週期分析

gradle的執行過程分成了三個部分

  • 1 初始化構建
  • 2 配置構建
  • 3 執行構建
  • 4 完成構建或者失敗

6.1 初始化的工作

gradle 支持單一和多項目構建,在這個初始化的階段,gradle就根據一些機制來判斷當前構建的項目是單項目還是多項目。在android的插件裏,初始階段是根據setting.gradle 的配置來判斷的。

include ':app', ':app2', ':libery','testeclipse2as'

上面的話是我的項目中的配,include代表需要編譯的project,一共有4個項目需要參與編譯。

一句到底,就是初始化階段,就是去讀取項目的setting.gradle。項目開始構建的時候,就會創建一個gradle對象,下面的是這個對象的api和屬性。

https://docs.gradle.org/current/javadoc/org/gradle/api/invocation/Gradle.html#afterProject(org.gradle.api.Action)

6.2 配置構建的工作

在上面的初始化完成後,gradle知道了需要構建的各個項目,於是gradle會嘗試讀取每一個項目,並將每個項目的 build.gradle 變成一個project對象,這個project就對應了這個build.gradle文件,接着確認好項目的依賴關係,下面這個是project的文檔。

https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html

 gradle.afterProject( {
         project ->
    println("this projcet name is = "+project.getName())
    println("this projcet path is = "+project.getPath())
 })

afterProject 什麼意思呢?就是當gradle初始化完成後,開始執行project後會執行這個方法,我們看到這個方法接收的是一個閉包。

project這個類裏面有一個方法,叫afterEvaluate,這個方法是當這個project被執行的到時候就回調這個方法。

我們在某一個項目中的build.gradle文件中添加這個方法:

6.3 執行構建的工作

每個項目都有一個個的task(任務),每個任務之間都有相應的關係。執行構建的工作就是執行工作的任務,在執行任務的過程中,gradle會把這個任務的依賴的任務逐個執行。

上圖顯示的是當前項目所有的可執行的任務,如果我們選擇build的菜單的話,就會選擇執行構建裏面的任務。我們可以使用下面的命令來查看

./gradlew tasks --all

包括我們在android studio上面點擊的安裝按鈕。實際也是通過我們的install命令。

未完待續…..

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章