天天看點

9. Gradle源代碼編譯以及源代碼分析

一. Gradle簡介

Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基于Groovy的特定領域語言(DSL)來聲明項目設定,抛棄了基于XML的各種繁瑣配置。---來源于百度

對于自己而言,作為一個Android程式員,我自己使用就是用它來編譯android程式,以前用ant,現在用gradle。

但是個人覺得在android studio gradle屬性又多又亂,不知道總共有哪些屬性;同時對于架構,自己也不喜歡黑盒使用它,總覺得心裡沒底,是以想把Gradle的源代碼研究一遍。

二. Gradle和Groovy關系

Groovy是一種類似Java的程式設計語言,文法就像在Java裡面糅合了很多腳本語言的特性,比如def定義變量

<code>def val</code>

<code>val = </code><code>"abc"</code>

<code>val = </code><code>1</code>

類似的寫法,還有Gpath以及閉包等等,大家最好去下面的網站看看Groovy文法,然後對着敲敲。這對自己了解Gradle配置有一定的好處。

那Gradle就是利用Groovy和Java語言編寫的一款自動化建構工具。

<a href="http://www.groovy-lang.org/single-page-documentation.html" target="_blank">Groovy官方教程,文法教程</a>

<a href="https://github.com/apache/groovy" target="_blank">Groovy github源代碼</a>

三. Gradle源代碼編譯

下載下傳Gradle源代碼

<a href="https://services.gradle.org/distributions/" target="_blank">Gradle源代碼下載下傳</a>

下載下傳的時候,選擇src即可;本來自己下載下傳了all,但是後面發現不對。編譯的話需要下載下傳src。

就像這樣的:

<code> </code><code>gradle-4.0-milestone-2-src.zip 17-May-2017 14:05 +0000 21.28M</code>

<code> </code><code>gradle-4.0-milestone-2-bin.zip 17-May-2017 14:05 +0000 64.28M</code>

<code> </code><code>gradle-4.0-milestone-2-all.zip 17-May-2017 14:05 +0000 85.43M</code>

<code> </code><code>gradle-4.0-milestone-1-src.zip 28-Apr-2017 07:04 +0000 20.70M</code>

<code> </code><code>gradle-4.0-milestone-1-bin.zip 28-Apr-2017 07:04 +0000 64.11M</code>

<code> </code><code>gradle-4.0-milestone-1-all.zip</code>

2. 解壓...

你會發現一個這樣的目錄結構:

<a href="https://s4.51cto.com/wyfs02/M00/96/47/wKioL1ke0f6BTtmNAAAUaPvvNM8605.png-wh_500x0-wm_3-wmp_4-s_1071653225.png" target="_blank"></a>

其中gradlew.bat是windows環境下Gradle源代碼自身編譯的腳本,gradlew應該是linux下面的,我沒有去測試。

注意!這個不是gradle!! gradle.bat是Gradle去編譯其他項目的腳本。

是以,我們最開始的時候,是沒有Gradle環境的,需要編譯編譯一個Gradle環境出來,是以這裡我們隻有gradlew.bat

3. 編譯

打開一個指令行,把gradle.bat拖進去,後面接着輸入assemble

也就是:

e:\work_space\gradle-source-from-csdn\gradle-3.1&gt;E:\work_space\gradle-source-fro

m-csdn\gradle-3.1\gradlew.bat assemble

按道理來說,直接輕按兩下運作gradlew.bat也是可以的,不過我是保險起見,按上面的方法(被問題搞怕了)。

4. 編譯結果

編譯的時候它會下載下傳不少jar,需要一點時間。

編譯完畢後在源代碼目錄下會有一個build目錄,進去後有個distributions目錄,再進去,裡面有編譯好的Gradle環境包 xxx-bin.zip,直接解壓即可。如下:

<a href="https://s4.51cto.com/wyfs02/M00/96/47/wKiom1ke1D3yNFrCAAAhHHZhfsE278.png-wh_500x0-wm_3-wmp_4-s_1323375604.png" target="_blank"></a>

解壓後,會有下面的目錄:

<a href="https://s5.51cto.com/wyfs02/M00/96/47/wKiom1ke3GryWxYzAAA11moOaF4233.png-wh_500x0-wm_3-wmp_4-s_3422987175.png" target="_blank"></a>

bin目錄下有gradle.bat,用來編譯其他項目的腳本,是以可以把bin目錄添加到環境變量裡面,這樣在任意指令行目錄都可以執行gradle xxx

lib目錄是編譯出來的jar包,包含了很多module,後面如果我們修改了某個源代碼檔案,編譯出jar包後,那就直接替換lib裡面的jar,然後再去編譯其他的項目,就可以驗證我們的修改。

接下來會進行源代碼流程分析。

     本文轉自rongwei84n 51CTO部落格,原文連結:<b>http://blog.51cto.com/483181/1927673</b>,如需轉載請自行聯系原作者