我知道这里讨论的两者之间的区别。
作为安卓系统的开发者,
- 为什么我应该关心这个
- 在gradle中,为什么我应该使用
compileOnly
而不是implementation/api
为什么我应该关心这个?
让你的应用程序构建,但不要附带不必要的东西。
在gradle中,为什么我应该使用compileOnly与implementation/api?
compileOnly
的文档以一个用例为例:
Gradle只将依赖项添加到编译类路径中(它不会添加到构建输出中(。当您创建Android库模块并且在编译过程中需要依赖项时,这很有用,但在运行时存在是可选的。也就是说,如果使用此配置,则库模块必须包含一个运行时条件,以检查依赖项是否可用,然后适当地更改其行为,以便在未提供依赖项的情况下仍然可以运行。这有助于减少最终APK的大小,因为不添加非关键的瞬态依赖关系。此配置的行为与所提供的一样(现在已弃用(。
源
例如,考虑一个推送消息库,它同时支持Firebase FCM和Amazon ADM,但不需要两者。如果将两者都作为可传递的依赖项提供,这将不必要地膨胀应用程序。使用compileOnly
仍然可以构建库。使用库的开发人员可以选择实际使用哪些依赖项。
另一个例子可以是不需要随应用程序一起提供的编译时注释。