天天看點

Gradle依賴方式

有時候,人就得狠狠抽自己個大嘴巴子,不然自己不抽總會有人替你抽。

                                                                                                                                                                            ----泰語心說

        近期我們将開發一個新聞SDK供中興公司使用,以後也将供給其他三方公司使用。為了使SDK的通用型更強,減少與三方依賴庫的沖突,有必要好好了解下Android 中庫依賴的方式。

Android Studio 2.x 和 3.x 中的依賴方式發生了些許的變化,

Gradle依賴方式
Gradle依賴方式

主要變動:

  • implementation 和 api 代替了compile;
  •  compileOnly 代替了 provided;
  •  runtimeOnly 代替了 apk;

記重點:

compile(2.x):

該方式依賴的庫将會參與編譯和打包。

implementation(3.x):

該依賴方式所依賴的庫不會傳遞,隻會在目前module中生效。例如我在一個common module 中使用 implementation 依賴了一個 SmartRefreshLayout 庫,然後 APP 子產品依賴了 common module 這個子產品,但是APP 子產品是不能使用 SmartRefreshLayout 庫的。如果,APP 子產品也得使用 SmartRefreshLayout 庫,那麼就得使用 api 依賴了。

api(3.x)和 2.x 版本中的 compile 用法完全一樣:

該依賴方式會傳遞所依賴的庫,當其他module依賴了該module時,可以使用該module下使用api依賴的庫。

compileOnly:provided

隻在編譯時有效,不會參與打包。當我們做 SDK 時,為了防止 com.android.support 包沖突時,可以在 SDK 的module 中使用 compileOnly 或者 provided 對com.android.support 進行引用。當然,前提時使用你SDK的module 必須依賴了 com.android.support 包。

繼續閱讀