傳統(tǒng)的依賴(lài)管理
過(guò)去通過(guò)gradle的ext屬性來(lái)維護(hù)依賴(lài)庫(kù)一個(gè)map
ext {
dependencies = [
"appcompat" : "androidx.appcompat:appcompat:1.2.0",
"recyclerview" : "androidx.recyclerview:recyclerview:1.2.0",
]
}
然后再相應(yīng)的module中添加具體的引用
implementation rootProject.ext.dependencies[appcompat]
implementation rootProject.ext.dependencies[recyclerview]
這種方法實(shí)現(xiàn)了依賴(lài)庫(kù)的集中管理稼病,但是缺少I(mǎi)DE的支持在添加依賴(lài)庫(kù)的時(shí)候IDE不能自動(dòng)補(bǔ)全
buildSrc方式管理依賴(lài)庫(kù)
- 什么是buildSrc
當(dāng)你運(yùn)行Gradle時(shí)趁桃,它會(huì)檢查項(xiàng)目中是否存在一個(gè)名為buildSrc的目錄。
然后Gradle會(huì)自動(dòng)編譯并測(cè)試這段代碼牡肉,并將其放入構(gòu)建腳本的類(lèi)路徑中眯漩。您不需要提供任何進(jìn)一步的操作提示秒际。
- 使用buildSrc
- 創(chuàng)建與app同級(jí)的文件夾buildSrc
- 在buildSrc文件夾里創(chuàng)建名為build.gradle.kts的文件,并添加如下代碼
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
}
-
在buildSrc的module中創(chuàng)建src了赵、main慎宾、java文件夾丐吓,目錄格式如下圖
在java目錄中創(chuàng)建類(lèi)Deps.kt 并添加相應(yīng)的依賴(lài)管理
object V{
const val appcompat="1.2.0"
const val retrofit="2.9.0"
const val material="1.3.0"
}
object Deps {
const val appcompat= "androidx.appcompat:appcompat:${V.appcompat}"
const val retrofit= "com.squareup.retrofit2:retrofit:${V.retrofit}"
const val material= "com.google.android.material:material:${V.material}"
}
- 在具體的mudole中引用
mudole_one/build.gradle
dependencies {
implementation Deps.appcompat
implementation Deps.material
implementation Deps.retrofit
}
mudole_two/build.gradle
dependencies {
implementation Deps.appcompat
implementation Deps.material
implementation Deps.retrofit
}
最終實(shí)現(xiàn)如下效果
總結(jié)
buildSrc 方式管理依賴(lài)大大增加了依賴(lài)管理的便捷性和易用性
優(yōu)點(diǎn)
- 共享 buildSrc 庫(kù)工件的引用,全局管理依賴(lài)
- 支持 AndroidStudio 自動(dòng)補(bǔ)全璧诵,實(shí)現(xiàn)Autocomplete
- 支持依賴(lài)庫(kù)的點(diǎn)擊跳轉(zhuǎn)
缺點(diǎn)
A change in buildSrc causes the whole project to become out-of-date.
Thus, when making small incremental changes, the --no-rebuild command-line option is often helpful to get faster feedback.
Remember to run a full build regularly or at least when you’re done, though.
buildSrc的更改會(huì)導(dǎo)致整個(gè)項(xiàng)目過(guò)時(shí)汰蜘,因此,在進(jìn)行小的增量更改時(shí)之宿,
-- --no-rebuild命令行選項(xiàng)通常有助于獲得更快的反饋族操。不過(guò),請(qǐng)記住要定期或至少在完成后運(yùn)行完整版本
- 缺點(diǎn)就是buildSrc 依賴(lài)更新將重新構(gòu)建整個(gè)項(xiàng)目