AndroidStudio中Gradle的幾種依賴方式詳解

詳解AndroidStudio中三方庫(kù)的幾種依賴方式碌更。以及對(duì)應(yīng)方式的特點(diǎn)。

依賴方式 依賴特點(diǎn)
compile Gradle3.0棄用洞慎,使用該種依賴方式痛单,依賴可以多級(jí)傳遞,如B依賴A劲腿,C依賴B旭绒,那么C也可以使用A的類和方法。
provided 標(biāo)識(shí)該庫(kù)只是在編譯期使用焦人,但是不會(huì)打包到最終的APK中挥吵,但是需要保證一點(diǎn),如果運(yùn)行時(shí)需要用到該庫(kù)花椭,則需要保證項(xiàng)目中其他地方已導(dǎo)入該庫(kù)忽匈,且是可訪問(wèn)的。否則軟件運(yùn)行會(huì)出現(xiàn)異常
implementation 該種依賴方式導(dǎo)入的依賴不能在編譯期被其他模塊共享矿辽。其他模塊只有在運(yùn)行時(shí)才可以共享此模塊
api 該種依賴方式導(dǎo)入的依賴丹允,可以多級(jí)傳遞,即B依賴A嗦锐,C依賴B嫌松,那么C也可以使用A的類和方法
compileOnly 用來(lái)取代舊版的provided沪曙,標(biāo)識(shí)該庫(kù)只在編譯期間使用奕污,運(yùn)行時(shí)可有可無(wú)。如果運(yùn)行時(shí)有用到液走,需要保證有對(duì)應(yīng)的庫(kù)取代它碳默,這種方法有助于減小APK體積大小,但是要注意運(yùn)行時(shí)依賴是否存在缘眶。
runtimeOnly 編譯期間不參與編譯期嘱根,只會(huì)在構(gòu)建輸出的時(shí)候打包進(jìn)APK中,類似舊版的apk依賴方式
annotationProcessor 主要是用來(lái)標(biāo)識(shí)一些庫(kù)用到的注解器巷懈。
Kapt kotlin注解庫(kù)该抒,兼容java

Android中常見(jiàn)依賴說(shuō)明

implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
本地二進(jìn)制文件依賴:將libs文件夾下后綴為.jar和.aar的包引入到項(xiàng)目中
implementation files('libs/foo.jar', 'libs/bar.jar')
本地二進(jìn)制文件依賴:指定libs文件夾下的指定二進(jìn)制文件

implementation project(":mylibrary")
本地module依賴:引入項(xiàng)目中本地module

遠(yuǎn)程二進(jìn)制文件依賴:兩種寫(xiě)法
簡(jiǎn)單寫(xiě)法
implementation 'com.example.android:app-magic:12.3'
復(fù)雜寫(xiě)法
implementation group: 'com.example.android', name: 'app-magic', version: '12.3'
該依賴聲明了對(duì)com.example.android命名空間組內(nèi)12.3版app-magic的依賴關(guān)系

排除重復(fù)依賴項(xiàng)的幾種解決方式

由于依賴庫(kù)比較多,而有些庫(kù)在引入的時(shí)候也會(huì)用到第三方庫(kù)顶燕,就難免出現(xiàn)同一庫(kù)被多次引入的情況凑保,如果庫(kù)版本不一致還可能導(dǎo)致新的問(wèn)題

implementation('some-library') {
    transitive = true,依賴同于沒(méi)有使用 exclude 排除依賴 涌攻,每個(gè)包的依賴項(xiàng)都會(huì)被遞歸分析并添加進(jìn)來(lái)欧引。默認(rèn)為true
    transitive = false,則依賴關(guān)系同于用 exclude 排除依賴恳谎。
    exclude group: 'com.example.imgtools', module: 'native'
    //exclude 會(huì)排除transitive=true的一些庫(kù)芝此,用exclude包含的庫(kù)表示該庫(kù)不需要引入憋肖,直接引入宿主app的該庫(kù)即可
}

1、一次性排除所有重復(fù)依賴項(xiàng)婚苹,使其使用同一版本的該公共庫(kù)

//解決不同依賴庫(kù)support版本不一致警告問(wèn)題
configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '27.1.1'
                }
            }
        }
}

2岸更、出現(xiàn)沖突時(shí)強(qiáng)制使用某一個(gè)版本

// 強(qiáng)制使用 support-v4 26.1.0版本
compile('com.android.support:support-v4:26.1.0') {
   force = true
}

3、不同庫(kù)使用不同的版本

configurations.all {
// 遍歷所有的依賴膊升,根據(jù) moduleName 使用對(duì)應(yīng)的版本坐慰。確實(shí)可行
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        } else if (requested.name.startsWith("advrecyclerview")) {
            details.useVersion '27.0.0'
        } else {
            details.useVersion '25.3.0'
        }
    }
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市用僧,隨后出現(xiàn)的幾起案子结胀,更是在濱河造成了極大的恐慌,老刑警劉巖责循,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糟港,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡院仿,警方通過(guò)查閱死者的電腦和手機(jī)秸抚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)歹垫,“玉大人剥汤,你說(shuō)我怎么就攤上這事∨挪遥” “怎么了吭敢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)暮芭。 經(jīng)常有香客問(wèn)我鹿驼,道長(zhǎng),這世上最難降的妖魔是什么辕宏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任畜晰,我火速辦了婚禮,結(jié)果婚禮上瑞筐,老公的妹妹穿的比我還像新娘凄鼻。我一直安慰自己,他們只是感情好聚假,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布块蚌。 她就那樣靜靜地躺著,像睡著了一般魔策。 火紅的嫁衣襯著肌膚如雪匈子。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天闯袒,我揣著相機(jī)與錄音虎敦,去河邊找鬼游岳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛其徙,可吹牛的內(nèi)容都是我干的胚迫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唾那,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼访锻!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闹获,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤期犬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后避诽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體龟虎,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年沙庐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲤妥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拱雏,死狀恐怖棉安,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铸抑,我是刑警寧澤贡耽,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站羡滑,受9級(jí)特大地震影響菇爪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柒昏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熙揍。 院中可真熱鬧职祷,春花似錦、人聲如沸届囚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)意系。三九已至泥耀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛔添,已是汗流浹背痰催。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工兜辞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夸溶。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓逸吵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缝裁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扫皱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354