gradle中api、implementation和compile的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gradle中api、implementation和compile的区别相关的知识,希望对你有一定的参考价值。

参考技术A

我们在gradle中引用第三方maven库时,一般通过下面的语句去引用:

然后sync project,就能成功引用对应的包到项目之中了,十分方便。除了使用compile关键字,使用implementation和api也能将包引用到项目中:

看起来这三个关键字的作用是一样的,那么,他们到底有什么区别呢?
api和compile关键字作用效果是一样的,使用时可以互相替换。实际上,api关键字是用来替代compile关键字的,因为compile关键字将来会被弃用。在高版本的gradle,使用compile关键字会报错并提示使用api关键字代替:

在同一个module下,implementation和compile的使用效果相同,但是在不同module下,就会有所区别了。举个例子,在项目中有一个名为action的module,其gradle配置文件中引用了两个包:

然后在app module中引入action module:

如果此时你尝试在app module中引入action module在gradle中配置的两个maven库,你会发现,使用implementation关键字的appcompat-v7包无法在app module中使用,而使用compile关键字的design包则可以使用。
这样,两个关键字的区别就显而易见了, api或compile关键字引用的包对于其他module来说是可见的,而implementation关键字引用的包对于其他module来说是不可见的。

以上是关于gradle中api、implementation和compile的区别的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 依赖配置:implementation & api

Gradle中implementation和api的区别

gradle implementation runtimeOnly 和api 区别

Android Gradle 插件Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )

Gradle中的api,implementation,kapt annotationProcessor的使用

Java使用 Gradle 依赖配置compile,implementation和api的区别