通俗的理解Gradle

Android開發,打算從Eclipse+ADT遷移到Android Studio+Gradle,首先了解Gradle


什麼是Gradle?

軟件開發的整個過程,編程和編譯只是其中的一部分。軟件最終是要發佈併產生商業價值的,面對不同品牌,尺寸,簽名文件,服務器地址…,需要提供不同的版本並部署

軟件開發,可以分成以下幾個步驟:

  • 編譯
  • 運行單元測試和集成測試
  • 執行靜態代碼分析、生成分析報告
  • 創建發佈版本
  • 部署到目標環境
  • 部署傳遞過程
  • 執行冒煙測試和自動功能測試

步驟來自參考文獻[1],因爲我也沒有很瞭解公司內部軟件開發的過程,只使用過導入第三方.jar包,編譯生成.classes文件,打包成.apk發佈等,關於各種渠道也是從美團Android自動化之旅——生成渠道包中瞭解的。這些繁瑣的步驟如果能夠自動化構建,將會帶來極大的便利。Gradle就是這類build automation tool的新寵~


WHY Gradle?

官網上有一羣大牛的testimonial來blabla Gradle是多麼多麼的好…..Gradle自己的定義是這樣的:

Gradle makes the impossible possible, the possible easy and the easy elegant

作爲Google親兒子,Android Studio+Gradle非常方便好用。雖然前期安裝配置比較生疏,JDK版本和SDK版本更新網速虐哭,Gradle下載也需要起早貪黑趕着實驗室人少的時候,可是一旦上手,就會理解Gradle+Android Studio的優勢:

  • Gradle使用的Groovy腳本,無縫支持JVM!因爲Groovy是誕生在JVM上的語言,所以比其它語言更能適應JVM的發展,而不需要像其它移植語言一樣削足適履
  • Groovy腳本簡潔清晰,使得構建代碼更易於維護、理解,構建不同版本不同代碼就變得非常簡單

快速熟悉Gradle

Modules

Modules是一種獨立的功能單元,可以運行、測試並且獨立調試,和Eclipse的Project概念類似,但是又有不同

每個Modules都有自己的Gradle build file,它是自動生成的,保存諸如Android版本,項目依賴的內容等重要數據。有些Modules可能是“Library Module Modules”,功能上就是Eclipse中的Library Project

個人理解的話,Gradle倒挺像標籤+收納盒收納箱,將應用和應用之間的關係細分爲單個模塊。單個的module,由自己的build.gradle管理;整個的Android Studio項目,由一個整體的setting.gradle管理;大多數時候,gradle文件是自動更新的;有時候也需要手動修改

依賴管理

既然Gradle的功能之一,就是強大的依賴管理工具,那麼它主要管理哪些依賴呢?

本地依賴

一個Module可能依賴於其它的Module,建立好這兩個Module的依賴關係,Android Studio就會自動生成Gradle配置元素

遠程倉庫

做軟件開發就需要不同的lib/library,使用Eclipse時期每次都要下載.jar/.library後再手工導入,現在有了mavenCentral和jcenter中央倉庫,從這個倉庫裏可以找到所有你想要的甚至沒有聽說過的jar/arr,你只需要在build.gradle裏指定它的座標,剩下的依賴尋找,下載,添加等都不需要你關心了

build.gradle的基本配置就是以上內容,還有許多自定義的功能,如自動打包debug,release,beta等環境,簽名,多渠道打包,可以後面遇到的時候慢慢學習


怎樣學習Gradle?

最初遷移到Android Studio學習Gradle,以爲可以Hello World了,可以用git了,就能挽起袖子碼代碼了。後來clone了幾個Github上的項目,Gradle版本問題、依賴包找不到、應用無法build等各種問題,發現還是要按部就班的學習Gradle:

  1. 更新gradle V2.4到V2.7:練習在控制檯上使用gradle指令
  2. 在Android Studio上寫demo:練習第三方庫導入,包括第三方UI庫導入
  3. fork源碼:練習導入別人的項目中的庫

參考文獻

[1]知乎:gradle和maven有什麼用?分別有什麼區別?
[2]知乎:如何從eclipse轉入android studio?

發佈了37 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章