欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin+buildSrc更好的管理Gradle依賴譯文

 更新時間:2022年06月23日 08:58:21   作者:ronaldong  
這篇文章主要為大家介紹了Kotlin+buildSrc更好的管理Gradle依賴譯文及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

原文地址:Kotlin + buildSrc for Better Gradle Dependency Management

原文作者:Sam Edwards,Lead Android Engineer at Google Developer Expert for Android

為了充分利用Android Plugin for Gradle 3.0+的優(yōu)點,將Android項目拆分成多個module的做法越來越常見。然而,隨著module數(shù)量的增多,我們很快就會遇到依賴管理的混亂問題。

管理Gradle依賴的三種不同方法:

  • 手動管理
  • 使用Google推薦的“ext”
  • Kotlin + buildSrc

1.手動管理

這是一種大多數(shù)人在采用的管理依賴的方法,但每次升級依賴庫時都需要做大量的手動更改。

module_a/build.gradle

implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"

module_b/build.gradle

implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"

這里存在許多重復(fù)的配置,而且當(dāng)你的項目有很多module時很難管理依賴庫的版本更新。

2.Google推薦:使用gradle的extra屬性

Google在Android官方文檔中推薦這種管理依賴的方法。許多項目例如ButterKnife、Picasso等都在使用這種方法。

此方法非常適用于更新support library的版本,因為每個support library都具有相同的版本號,你只需要在一個地方更改它就行了。 Retrofit等其它第三方庫也是如此。

Root-level build.gradle

ext {
  versions = [
    support_lib: "27.0.2",
    retrofit: "2.3.0",
    rxjava: "2.1.9"
  ]
  libs = [
    support_annotations: "com.android.support:support-annotations:${versions.support_lib}",
    support_appcompat_v7: "com.android.support:appcompat-v7:${versions.support_lib}",
    retrofit :"com.squareup.retrofit2:retrofit:${versions.retrofit}",
    retrofit_rxjava_adapter: "com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit}",
    rxjava: "io.reactivex.rxjava2:rxjava:${versions.rxjava}"
  ]
}

module_a/build.gradle

implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava

module_b/build.gradle

implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava

這種方法是手動管理的一大進(jìn)步,但是缺少IDE的支持,更準(zhǔn)確的說是在更新依賴庫的時候IDE不能自動補(bǔ)全。

3.Kotlin + buildSrc == Android Studio Autocomplete ?? ??

您需要在您的項目里創(chuàng)建一個buildSrc模塊,然后編寫kotlin代碼來管理依賴庫,使得IDE支持自動補(bǔ)全。

Gradle文檔中有這樣一段話:

當(dāng)你運(yùn)行Gradle時,它會檢查項目中是否存在一個名為buildSrc的目錄。然后Gradle會自動編譯并測試這段代碼,并將其放入構(gòu)建腳本的類路徑中。您不需要提供任何進(jìn)一步的操作提示。

你只需要在buildSrc module中新建兩個文件:

  • build.gradle.kts
  • 編寫Kotlin代碼的文件 (本文中是指Dependencies.kt)

buildSrc/build.gradle.kts:

plugins {
    `kotlin-dsl`
}

buildSrc/src/main/java/Dependencies.kt

object Versions {
    val support_lib = "27.0.2"
    val retrofit = "2.3.0"
    val rxjava = "2.1.9"
}
object Libs {
 val support_annotations = "com.android.support:support-annotations:${Versions.support_lib}"
 val support_appcompat_v7 = "com.android.support:appcompat-v7:${Versions.support_lib}"
 val retrofit = "com.squareup.retrofit2:retrofit:${Versions.retrofit}"
 val retrofit_rxjava_adapter = "com.squareup.retrofit2:adapter-rxjava2:${Versions.retrofit}"
 val rxjava = "io.reactivex.rxjava2:rxjava:${Versions.rxjava}"
}

經(jīng)過上面兩個步驟后,執(zhí)行一次Gradle Sync任務(wù),現(xiàn)在我們可以在Android Studio中訪問Dependencies.kt中任何值了。

看起來結(jié)果與“ext”非常相似,但是它支持自動補(bǔ)全和單擊跳轉(zhuǎn)。

module_a/build.gradle

implementation Libs.support_annotations
implementation Libs.support_appcompat_v7
implementation Libs.retrofit
implementation Libs.retrofit_rxjava_adapter
implementation Libs.rxjava

module_a/build.gradle

implementation Libs.support_annotations
implementation Libs.support_appcompat_v7
implementation Libs.retrofit
implementation Libs.retrofit_rxjava_adapter
implementation Libs.rxjava

小結(jié)

我強(qiáng)烈推薦您使用“Kotlin + buildSrc”的方法。它支持自動補(bǔ)全和單擊跳轉(zhuǎn),使得您無需在文件之間手動來回切換,方便你更好的管理Gradle依賴。

動手實踐:

新建的module名稱必須為buildSrc

一開始我按照作者原文的描述,在Android Studio里右鍵單擊項目,New 出一個名為buildSrc的Android Library,試了好幾遍都提示“Gradle sync failed: Plugin with id 'com.android.library' not found”的錯誤。

后來我參考這里的做法,手動創(chuàng)建了buildSrc這個模塊。步驟如下:

1.在項目根目錄下新建一個名為buildSrc的文件夾(與項目里的app文件夾同級)。

2.在buildSrc文件夾里創(chuàng)建名為build.gradle.kts的文件,文件內(nèi)容參考之前的描述。

3.在buildSrc文件夾里創(chuàng)建src/main/java文件夾,如下圖所示。并在該文件夾下創(chuàng)建Dependencies.kt文件,文件內(nèi)容參考之前的描述。

4. build一遍你的項目,然后重啟你的Android Studio,項目里就會多出一個名為buildSrc的module。

以上就是Kotlin+buildSrc更好的管理Gradle依賴譯文的詳細(xì)內(nèi)容,更多關(guān)于Kotlin+buildSrc管理Gradle依賴的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論