使用Gradle插件3构建一个多模块Android应用程序,而不是使用compile one声明一个依赖项应该使用implementation或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
建议使用(它将加速项目建设并防止依赖性泄漏)
但是如果你的模块在它的公共API上使用它的某些依赖项,则应该使用api
配置添加这些依赖项,否则模块的用户应该手动添加这些依赖项。