Gradle依賴之‘五種依賴配置’

[轉(zhuǎn)]Gradle依賴之‘五種依賴配置’

目前gradle支持的依賴配置有五種,分別是implementation, api, compileOnly, runtimeOnly和annotationProcessor。常用的依賴配置是implementation, api和compileOnly。

1. 第一種:implementation

會將指定的依賴添加到編譯路徑,并且會將該依賴打包到輸出,如apk中,但是這個依賴在編譯時不能暴露給其他模塊,例如依賴此模塊的其他模塊。這種方式指定的依賴在編譯時只能在當前模塊中訪問。

當前項目中有兩個模塊app和decoder


image.png

模塊app依賴模塊decoder

decoder中添加了遠程二進制庫依賴joda-time

image.png

在decoder模塊中使用這個庫

image.png

在app模塊中條用decoder模塊提供的方法

image.png

嘗試在app模塊中使用joda-time庫

image.png

出現(xiàn)錯誤:


image.png

從上面的例子中我們可以看出,complementation依賴設(shè)置表示當前這個依賴在編譯時只能在當前這個模塊中訪問,其他模塊在編譯時不能訪問,依賴這個模塊的其他模塊在運行時可以訪問這個庫的實現(xiàn)。

2. 第二種:api

使用api配置的依賴會將對應(yīng)的依賴添加到編譯路徑,并將依賴打包輸出,但是這個依賴是可以傳遞的,比如模塊A依賴模塊B,B依賴庫C,模塊B在編譯時能夠訪問到庫C,但是與implemetation不同的是,在模塊A中庫C也是可以訪問的。

我們修改decoder模塊中對joda-time庫的依賴配置

image.png

在app模塊中使用joda-time庫

image.png

輸出


image.png

3. 第三種:compileOnly

compileOnly修飾的依賴會添加到編譯路徑中,但是不會打包到apk中,因此只能在編譯時訪問,且compileOnly修飾的依賴不會傳遞。

image.png

編譯時通過,運行時報錯:

image.png

由于寫Android的時間比較短,不知道這個配置的具體應(yīng)用場景,希望有經(jīng)驗的大佬能夠在評論區(qū)回復(fù)一下具體的應(yīng)用場景。

4. 第四種:runtimeOnly

這個與compileOnly相反,它修飾的依賴不會添加到編譯路徑中,但是被打包到apk中,運行時使用。沒有使用過。

5. 第五種:annotationProcessor

用于注解處理器的依賴配置,還沒有使用過。

除了上面五種,還有兩種testImplementation和androidTestImplementation兩種,用于指定在測試代碼的依賴。

對于上面這么多的依賴,其中Implementation是我們最常用的依賴配置選項。

官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容