答案 0 :(得分:1)
我为什么要关心这个?
要构建您的应用,但不要附带不必要的内容。
在gradle中,为什么我应该使用compileOnly vs Implementation / api?
compileOnly
的文档给出了一个用例作为示例:
Gradle仅将依赖项添加到编译类路径(不将其添加到构建输出)。当您创建Android库模块并且在编译过程中需要依赖项时,这很有用,但在运行时存在依赖项是可选的。也就是说,如果使用此配置,则您的库模块必须包含一个运行时条件,以检查该依赖项是否可用,然后优雅地更改其行为,以便在未提供依赖项时仍可以运行。通过不添加非关键的临时依赖关系,这有助于减小最终APK的大小。此配置的行为与提供的行为类似(现已弃用)。
例如,考虑一个同时支持Firebase FCM和Amazon ADM但又不需要的推送消息库。如果将它们作为传递依赖项一起提供,则将不必要地使应用程序肿。使用compileOnly
仍可以构建库。使用该库的开发人员可以选择要实际使用的依赖项。
另一个示例可能是不需要随应用程序一起提供的编译时注释。