android - 避免使用 api 并始终使用实现?

标签 android android-gradle-3.0

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

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

问的有点不同:为什么我要使用 api 而不是使用实现显式声明依赖项?避免api似乎“节省”。 api 只是为了方便还是我遗漏了任何副作用?

最佳答案

一般来说,推荐使用implementation(它会加速项目构建并防止依赖泄漏)

但是,如果您的模块在其公共(public) API 中使用了一些依赖项,则应使用 api 配置添加这些依赖项,否则您模块的用户应手动添加这些依赖项。

关于android - 避免使用 api 并始终使用实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49065335/

相关文章:

android - 在所有屏幕上一致调整位图大小的万无一失的方法是什么

android - 找不到与给定名称匹配的资源 '@style/Theme.Holo.Light.DarkActionBar'

android - java.lang.NoSuchMethodError : No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)

android - 使用 android-gradle 3 在 Android 库中公开支持库依赖项的正确方法是什么?

Android gradle 3.0.0 - ZLIB 输入流的意外结束

android - 当用户点击系统通知时,如何在 Cordova+Ember 中加载自定义位置?

java - 私有(private)成员变量变为 null

android - 如何在 onSaveInstanceState() 中存储值并检索?

API 26 中缺少 android.support.v4.animation