天天看点

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 包。

继续阅读