为什么编译时和运行时依赖性很重要?

时间:2018-08-01 09:27:31

标签: android android-gradle

我知道讨论的here两者之间的区别。

作为Android开发人员,

  1. 我为什么要关心这个?
  2. 在gradle中,为什么我应该使用compileOnlyimplementation/api

1 个答案:

答案 0 :(得分:1)

  

我为什么要关心这个?

要构建您的应用,但不要附带不必要的内容。

  

在gradle中,为什么我应该使用compileOnly vs Implementation / api?

compileOnly的文档给出了一个用例作为示例:

  

Gradle仅将依赖项添加到编译类路径(不将其添加到构建输出)。当您创建Android库模块并且在编译过程中需要依赖项时,这很有用,但在运行时存在依赖项是可选的。也就是说,如果使用此配置,则您的库模块必须包含一个运行时条件,以检查该依赖项是否可用,然后优雅地更改其行为,以便在未提供依赖项时仍可以运行。通过不添加非关键的临时依赖关系,这有助于减小最终APK的大小。此配置的行为与提供的行为类似(现已弃用)。

source

例如,考虑一个同时支持Firebase FCM和Amazon ADM但又不需要的推送消息库。如果将它们作为传递依赖项一起提供,则将不必要地使应用程序肿。使用compileOnly仍可以构建库。使用该库的开发人员可以选择要实际使用的依赖项。

另一个示例可能是不需要随应用程序一起提供的编译时注释。