Gradle依賴引入

Gradle依賴引入

關(guān)鍵詞說明

自Android studio版本更新至3.0后昭躺,連帶著com.android.tools.build:gradle 工具也升級到了3.0.0厉亏,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作為gradle的編譯版本价捧,該版本gradle編譯速度有所加速;

Gradle新老版本關(guān)鍵字

4.x+版本配置 已棄用配置
api compile
implement compile
compileOnly provided
runtimeOnly apk
testImplementation testCompile
androidTestImplementation androidTestCompile
debugImplementation debugCompile
releaseImplementation releaseCompile
  • api

與compile對應(yīng)让蕾,功能完全一樣浪规,會添加依賴到編譯路徑,并且會將依賴打包到輸出(aar或apk)涕俗,與implementation不同罗丰,這個依賴可以傳遞,其他module無論在編譯時和運(yùn)行時都可以訪問這個依賴的實現(xiàn)再姑,也就是會泄漏一些不應(yīng)該不使用的實現(xiàn)萌抵。舉個例子,A依賴B,B依賴C绍填,如果都是使用api配置的話霎桅,A可以直接使用C中的類(編譯時和運(yùn)行時),而如果是使用implementation配置的話讨永,在編譯時滔驶,A是無法訪問C中的類的。

  • implementation

與compile對應(yīng)卿闹,會添加依賴到編譯路徑揭糕,并且會將依賴打包到輸出(aar或apk),但是在編譯時不會將依賴的實現(xiàn)暴露給其他module锻霎,也就是只有在運(yùn)行時其他module才能訪問這個依賴中的實現(xiàn);

簡單的說著角,就是使用implementation指令的依賴不會傳遞;

使用這個配置,可以顯著提升構(gòu)建時間旋恼,因為它可以減少重新編譯的module的數(shù)量吏口。Google建議盡量使用這個依賴配置;

  • compileOnly

與provided對應(yīng),Gradle把依賴加到編譯路徑冰更,編譯時使用产徊,不會打包到輸出(aar或apk)。這可以減少輸出的體積蜀细,在只在編譯時需要舟铜,在運(yùn)行時可選的情況,很有用

  • apk

只在生成apk的時候參與打包审葬,編譯時不會參與深滚,很少用奕谭。

  • testImplementation

只在單元測試代碼的編譯以及最終打包測試apk時有效涣觉。

  • androidTestImplementation

只在Android相關(guān)單元測試代碼的編譯以及最終打包測試apk時有效。

  • debugImplementation

只在 debug 模式的編譯和最終的 debug apk 打包時有效

  • releaseImplementation

僅僅針對 Release 模式的編譯和最終的 Release apk 打包血柳。


引入依賴基本方式

理論上gradle支持三種類型的引用官册,方式如下:

dependencies {
    
    implementation project(':projectABC')
    
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'
}

1. 本地項目依賴 --> module依賴

dependencies {
    implementation project(':projectABC')
}

這種依賴方式是直接依賴本地工程代碼,比如這個 :projectABC 就是在整個工程項目配置的 settings.gradle 中進(jìn)行include操作;
例如:

dependencies {
   include ':projectABC'
}

2. 本地二進(jìn)制依賴 --> jar和so等文件

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

這種依賴方式是依賴工程中 libs 目錄下的Jar等文件难捌;

如果還想進(jìn)行單獨某個文件的引用

dependencies {
    implementation files('libs/aaa.jar', 'libs/bbb.jar')
    implementation files('x/y/z/ccc.jar')
}

注意:Gradle的路徑是相對于build.gradle文件來讀取的膝宁,所以上面是這樣的相對路徑

3.遠(yuǎn)端二進(jìn)制依賴

dependencies {
    implementation 'androidx.appcompat:appcompat:1.0.2'
}

這是簡潔寫法,也可以進(jìn)行完整寫法根吁,如:

dependencies {
    implementation  group: 'androidx.appcompat', name:'appcompat', version:'1.0.2'
}

引入依賴復(fù)雜方式

根據(jù)Task類型引入

有時候我們在引入的時候還需要考慮debug员淫,release,test包的情況如

dependencies {
    testImplementation 'junit:junit:4.12'
    
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-2'
    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:2.0-beta-2'
}

排除引用

有時候為了解決引入的沖突击敌,需要在引入遠(yuǎn)端包的同時排除這些包的某幾個依賴

dependencies {
    implementation ('com.github.bumptech.glide:glide:4.9.0'){
        exclude group:'com.android.support', module: 'support-fragment'
        exclude group:'com.android.support', module: 'support-core-ui'
        exclude group:'com.android.support', module: 'support-compat'
        exclude group:'com.android.support', module: 'support-annotations'
    }
}

也可以查看官方資料

google 官方說明文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末介返,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圣蝎,老刑警劉巖刃宵,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異徘公,居然都是意外死亡牲证,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門关面,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坦袍,“玉大人,你說我怎么就攤上這事等太〖耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵澈驼,是天一觀的道長辛燥。 經(jīng)常有香客問我,道長缝其,這世上最難降的妖魔是什么挎塌? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮内边,結(jié)果婚禮上榴都,老公的妹妹穿的比我還像新娘。我一直安慰自己漠其,他們只是感情好嘴高,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著和屎,像睡著了一般拴驮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柴信,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天套啤,我揣著相機(jī)與錄音,去河邊找鬼随常。 笑死潜沦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绪氛。 我是一名探鬼主播唆鸡,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼枣察!你這毒婦竟也來了争占?” 一聲冷哼從身側(cè)響起袄琳,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎燃乍,沒想到半個月后唆樊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡刻蟹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年逗旁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舆瘪。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡片效,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出英古,到底是詐尸還是另有隱情淀衣,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布召调,位于F島的核電站膨桥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唠叛。R本人自食惡果不足惜只嚣,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艺沼。 院中可真熱鬧册舞,春花似錦、人聲如沸障般。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽荡。三九已至藐石,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徐伐,已是汗流浹背贯钩。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留办素,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓祸穷,卻偏偏與公主長得像性穿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雷滚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

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

  • 在我們開發(fā)安卓項目的時候需曾,不會所有的功能都自己去造輪子,經(jīng)常要使用到各種的其他包,其中有谷歌給我們提供的各種sup...
    Android_Jieyao閱讀 14,462評論 1 24
  • 說在前面:Gradle中project是非常重要的,所以也會有非常多的API及其可配置的屬性谋减,筆者也有許多不了解的...
    ywy_袁滾滾閱讀 19,846評論 2 29
  • 在 Android Studio 構(gòu)建的項目中牡彻,基于 Gradle 進(jìn)行項目的構(gòu)建,同時使用 Android DS...
    Ant_way閱讀 7,363評論 0 16
  • 現(xiàn)在 android 開發(fā)中對于 gradle 也是很多技巧的出爹,簡單的有統(tǒng)一管理依賴及其版本號庄吼,復(fù)雜一些的涉及到 ...
    前行的烏龜閱讀 3,313評論 0 25
  • 我不知道是不是有人跟我一樣,看到一些能歌善舞的少數(shù)民族就有一種由衷的親切感自內(nèi)心發(fā)出严就!尤其是對他們的民族服飾总寻,風(fēng)土...
    金蝶愛生活閱讀 453評論 0 1