iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0

關於Gradle,我最一開始是從libGDX學到的。現在使用Android Studio新開一個project的話,default就會有Gradle了。

下圖為Gradle資料夾與default檔案們:
https://ithelp.ithome.com.tw/upload/images/20181023/20112439ncNUMc6hQq.jpg

Gradle是一個專案管理的工具,wiki上對Gradle的分類為build automation,最常見的build automation工具我想就是make了。規模較大的公司通常也會導入類似的工具,可以整合原始碼、版本控制、編譯、測試等功能。

根據libGDX對於Gradle的介紹有兩個重點:

  • Dependency management system - 只要修改設定檔,即可方便使用第三方library,而不需要儲存該library在自己的原始碼中。系統會從某個central repository載入第三方library,然後把它們儲存在project以外的資料夾。
  • build system - 個人覺得這比較符合build automation的直覺功能,可讓project在不同平台上編譯。

以下為一些名詞解釋:

Dependency

參考 Gradle對dependency的解釋,假設我有一個project需要使用到A library和B library,那A和B就是我的project的dependencies。

Gradle可設定dependency的scope,例如編譯程式需要使用A library,但B library只有跑測試時需要。

如果A library有個dependency是C library,那Gradle在處理A的時候也會順便處理C。

Dependency太多有可能會造成dependency hell(相依性地獄),例如A library需要C library version 1.2,B library需要C library version 5.1,很不巧的我的project需要A和B,這樣就會有衝突,造成錯誤。至於解法應該又是另一門學問了,先跳過。Gradle 有提供build scan的工具來掃描這樣的問題。

Central repository(中央知識庫)

Goodle搜尋第一筆就是 Maven Repository,看起來是個放很多library(artifact)的地方。跟據Maven官網的介紹,repository有兩種,local和remote。

  • Local repository – 遠端下載下來,儲存在本機cache的artifacts
  • Remote repository – 透過網路遠端取得的artifacts。公司自行建立的internal repository也是屬於remote repository

上一篇
[Android API] [Day 11] Android 資源管理
下一篇
[Android API] [Day 13] Gradle (2)
系列文
Android API超初學!!30

尚未有邦友留言

立即登入留言