避免 api 并始终使用实现?

Avoid api and always use implementation?

使用 Gradle 插件 3 构建多模块 Android 应用程序,而不是使用编译声明依赖项,应该使用实现或 api。后者基本上像编译一样工作。使用实现,依赖项对任何依赖于此模块的模块都是隐藏的。

所以,假设我有三个模块 A、B 和 C。B 依赖于 A,C 依赖于 B 和 A,就像这样:A <- B <- C (Gradle plugin 2 compile ).使用 Gradle 插件 3 我可以使用 "api" 做同样的事情。如果我使用实现显式声明所有依赖项,如 A <- B、A <- C、B <- C,会有什么不同吗?

问的有点不同:为什么我要使用 api 而不是使用实现显式声明依赖项?好像是"saver"回避api。 api 是为了方便还是我遗漏了任何副作用?

这是关于传递依赖的。在这里阅读更多:https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa

一般来说,implementation 推荐使用(它将 speed-up 项目构建并防止依赖性泄漏)

但是,如果您的模块在 public API 处使用了某些依赖项,则应使用 api 配置添加这些依赖项,否则您模块的用户应手动添加这些依赖项。