Android中依賴版本統(tǒng)一管理

前言

在Android的實(shí)際開(kāi)發(fā)中,我們會(huì)經(jīng)常使用到多Module開(kāi)發(fā)槽袄,而當(dāng)我們修改一些版本信息或者SDK升級(jí)時(shí)芹关,可能涉及多個(gè)Module都需要修改皿桑。

顯然逐個(gè)修改Module中的build.gradle文件是非常繁雜而且容易出錯(cuò)的一件事情撒会,基于此種
情況嘹朗,我們需要對(duì)整個(gè)工程中的配置和依賴進(jìn)行統(tǒng)一管理。

一诵肛、建立單獨(dú)config.gradle文件統(tǒng)一配置

我們可以在項(xiàng)目根目錄下建立config.gradle文件屹培,然后在項(xiàng)目的build.gradle文件中中引入:

    apply from:"config.gradle"
    buildscript {
    ...
    }

BuildConfig管理

首先是對(duì)BuildConfig的管理,如buildToolsVersion怔檩,targetSdkVersion等基本的config信息褪秀。

config.gradle文件中添加:

ext {
    android = [
            sourceCompatibilityVersion: JavaVersion.VERSION_1_8,
            targetCompatibilityVersion: JavaVersion.VERSION_1_8,
            minSdkVersion             : 21,
            targetSdkVersion          : 28,
            compileSdkVersion         : 30,
            buildToolsVersion         : "28.0.3",
            versionCode               : 1,
            versionName               : "1.0.0"
    ]
}

然后在Module里的build.gradle文件中可以使用上述參數(shù):

    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]

    defaultConfig {
        applicationId "com.example.demowork1"
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
        ...
    }

三、依賴管理

我們?cè)诙鄠€(gè)Module中可以存在一些相同的依賴薛训,如果我們對(duì)這些依賴升級(jí)媒吗,則需要多個(gè)Module配置都更改,容易疏漏乙埃。因此對(duì)依賴進(jìn)行統(tǒng)一管理是十分有必要的闸英,我們同樣可以使用config.gradle文件實(shí)現(xiàn)依賴管理。

config.gradle文件中添加各個(gè)依賴的版本及庫(kù)名稱介袜,使用versions統(tǒng)一管理依賴的版本自阱,dependencies統(tǒng)一管理引入的依賴,詳細(xì)代碼如下:

    versions = [
            // androidx libs
            appCompatVersion              : "1.0.2",
            recyclerViewVersion           : "1.2.0",
            constraintLayoutVersion       : "2.0.4",
            materialVersion               : "1.2.1"
        ]
    dependencies = [
            // androidx libs
            appcompat                   : "androidx.appcompat:appcompat:${versions.appCompatVersion}",
            recyclerView                : "androidx.recyclerview:recyclerview:${versions.recyclerViewVersion}",
            constraintLayout            : "androidx.constraintlayout:constraintlayout:${versions.constraintLayoutVersion}",
            material                    : "com.google.android.material:material:${versions.materialVersion}"
        ]

完成在config中的配置后米酬,我們就可以在Module的build.gradle中引用上述的依賴配置:

dependencies {

    implementation rootProject.ext.dependencies.appcompat
    implementation rootProject.ext.dependencies.okhttp

    implementation rootProject.ext.dependencies.recyclerView
    implementation rootProject.ext.dependencies.constraintLayout
    implementation rootProject.ext.dependencies.material
}

我們的config.build是在根目錄下,所有Module中都可以引入對(duì)應(yīng)的依賴趋箩,這樣在升級(jí)SDK時(shí)直接更新config中的配置即可赃额,達(dá)到一個(gè)統(tǒng)一管理的效果。

總結(jié)

通過(guò)自定義config.build文件可以實(shí)現(xiàn)依賴的統(tǒng)一管理叫确,對(duì)于組件化開(kāi)發(fā)的工程提供維護(hù)便利跳芳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竹勉,隨后出現(xiàn)的幾起案子飞盆,更是在濱河造成了極大的恐慌,老刑警劉巖次乓,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吓歇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡票腰,警方通過(guò)查閱死者的電腦和手機(jī)城看,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杏慰,“玉大人测柠,你說(shuō)我怎么就攤上這事炼鞠。” “怎么了轰胁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵谒主,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赃阀,道長(zhǎng)霎肯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任凹耙,我火速辦了婚禮姿现,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肖抱。我一直安慰自己备典,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布意述。 她就那樣靜靜地躺著提佣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荤崇。 梳的紋絲不亂的頭發(fā)上拌屏,一...
    開(kāi)封第一講書(shū)人閱讀 50,043評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音术荤,去河邊找鬼倚喂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瓣戚,可吹牛的內(nèi)容都是我干的端圈。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼子库,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舱权!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仑嗅,我...
    開(kāi)封第一講書(shū)人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宴倍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后仓技,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸵贬,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年脖捻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恭理。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郭变,死狀恐怖颜价,靈堂內(nèi)的尸體忽然破棺而出涯保,到底是詐尸還是另有隱情,我是刑警寧澤周伦,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布夕春,位于F島的核電站,受9級(jí)特大地震影響专挪,放射性物質(zhì)發(fā)生泄漏及志。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一寨腔、第九天 我趴在偏房一處隱蔽的房頂上張望速侈。 院中可真熱鬧,春花似錦迫卢、人聲如沸倚搬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)每界。三九已至,卻和暖如春家卖,著一層夾襖步出監(jiān)牢的瞬間眨层,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工上荡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趴樱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓酪捡,卻偏偏與公主長(zhǎng)得像伊佃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沛善,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容