題外話:其實原本不想取這個名字的,可是感受不取這個名字感受沒有幾我的看啊。你們確定以爲這個名字比較高大上吧!哈哈哈哈。好了,收。java
在平時Android開發中咱們經常使用Gradle來構建咱們的項目,我相信你們均可能遇到如下問題:git
相信你們在平時使用的時候,遇到問題都經過搜索引擎來解決,有些小夥伴可定會想,"做爲一個Android開發者,我沒有必要去詳細的瞭解Gradle到底去這麼使用,平時開發任務原本就比較重,哪裏有時間有精力來學習呢
" 可是我的以爲對Gradle的瞭解,對於咱們平時開發項目有很重要的幫助。github
要知道Gradle是什麼以及其做用。咱們須要從整個Java項目的構建提及,看下圖: 工具
從上圖中咱們能夠看出在平時Java項目的構建流程,或多或少咱們會涉及如下操做:佈局
javac
命令將一些Java源文件編譯爲class文件。javadoc
命令提取Java源文件的中的註釋。生成文檔。既然Java項目的構建會經歷以上或更多的步驟,那麼咱們接下來看看Android項目的構建流程。單元測試
對於Android項目的構建,主要會經歷和解決下面這些問題:學習
並未按照標準Java字節碼編譯
,但可爲Android運行時自定義字節碼。那麼聚集全部的資源以及狀況後,整個Android的構建流程看起來是這個樣子:測試
爲了方便你們理解這裏對其中主要的構建過程進行描述(上圖中綠色橢圓部分
):gradle
須要注意的是raw文件夾中的資源也會生成資源id。AAPT編譯完成以後會生成R.java文件
)。.class文件
。.dex文件
(dex文件是Dalvik虛擬機能夠執行的格式),dex文件最終會被打包進APK文件。在Android中,每一個應用程序中儲存的數據文件都會被多個進程訪問:安裝程序會讀取應用程序的manifest文件來處理與之相關的權限問題;Home應用程序會讀取資源文件來獲取應用程序的名和圖標;系統服務會由於不少種緣由讀取資源(例如,顯示應用程序的Notification)。此外,就是應用程序自身用到的資源文件。 在Android中,當資源文件經過內存映射對齊到4字節邊界時,訪問資源文件的代碼纔是有效率的。可是,若是資源自己沒有進行對齊處理(未使用zipalign工具),它就必須回到老路上,顯式地讀取它們——這個過程將會比較緩慢且會花費額外的內存。優化
從整個Android項目的構建來看,咱們會感嘆「爲啥我就簡單的建立一個應用,爲毛有很是多的事情須要作。」,因此爲了方便處理這些,咱們都會想是否是能夠寫一個能自動處理這些過程的程序化腳本呢?因此Gradle出現了!!!!
。
對於之前傳統的項目構建工具,只是編譯和打包源代碼。而如今項目的構建須要負責更多的工做,它們會運行測試、從多個來源購買編碼資源、生成文檔、建立多個構建變種、發佈應用程序和管理依賴性。而Gradle不只具有這些能力與功能,還解決了Android開發人員面臨的一些最棘手的問題,以下所示:
哎呀說這麼多,其實最大的緣由是Google爸爸已經選擇Gradle作爲Android Studio的構建系統
,在Android Studio中將Android應用的整個流程指派給了Gradle。當咱們點擊運行
按鈕時,Android studio會在運行過程當中設置Gradle,並在後臺監控。經過學習有關Gradle知識。咱們能夠擴展此默認行爲。以構建能力更強且通過適當測試的應用。
既然Gradle大法這麼好,爲毛咱們不去學習呢?
Gradle是項目的構建工具,解決了咱們平時開發中,項目測試、項目打包、項目依賴等問題。
Gradle系列會繼續寫。若是你們喜歡個人寫做風格的話。歡迎你們點贊。
最後,附上我寫的一個基於Kotlin 仿開眼的項目SimpleEyes(ps: 其實在我以前,已經有不少小朋友開始仿這款應用了,可是我以爲要作就作好。因此個人項目和其餘的人應該不一樣,不只僅是簡單的一個應用。可是,可是。可是。重要的話說三遍。還在開發階段,不要打我),歡迎你們follow和start