Gradle依赖配置compile、implementation与api的区别介绍

前言

Andrroid开发中每天都要面对Gradle配置,build.gradle中肯定要依赖第三方框架之类的的操作;AndroidStudio升级到3.0之后,gradle版本也随之升级到了3.0.0版本,3.0.0之前我们一般都是用compile依赖库文件,升级完之后出现了implementation与api的依赖方式,现在介绍下Gradle依赖配置compile、implementation与api的区别。


正文

先来看看项目中的build.gradle文件吧

dependencies {
    api fileTree(include: ['*.jar'], dir: 'libs')
    api deps.common_support
    api deps.common_constraint_layout
    testImplementation deps.common_junit
    implementation deps.common_okhttputils
    implementation files('libs/sun.misc.BASE64Decoder.jar')
    api project(path: ':libskinmanage')
    api project(path: ':libkeepalive')
    implementation (deps.common_tinkerpatch) { changing = true }
    api deps.common_walle
    api deps.common_multidex
}

当gradle插件升级到3.0.0及以上后,我们会发现在gradle中添加依赖的时候,会推荐你使用implementation或者api,而不再推荐你使用compile,那就来简单介绍下这两者的使用与区别

api方式

api依赖方式等同于compile方式,你将所有的compile改成api,完全没有错。

implementation方式

使用implementation方式依赖的特点是,将依赖的库文件隐藏在内部,不让外部访问,使用implementation指令的依赖不会传递。
例如:有一个module为myLib,myLib依赖于okhttputils,
implementation deps.common_okhttputils
这时候,在myLib里边的java代码是可以访问Glide的。
另一个module为app,app依赖于myLib:implementation project(’:myLib’)
这时候,因为myLib使用的是implementation 指令来依赖okhttputils,所以app里边不能引用okhttputils。
但是,如果myLib使用的是api来引用okhttputils:
api deps.common_okhttputils,app里边就可以引用okhttputils了,这就是api和implementation的区别。

compile方式

compile方式的效果和api完全一样,在3.x版本的gradle中已被废弃,在2018年底,被google移除,所以不要使用compile了

温馨提示

依赖首先应该设置为implementation,如果没有错误,那就用implementation ,如果有错,那么使用api指令

你可能感兴趣的:(Android)