【发布时间】:2019-01-08 19:37:20
【问题描述】:
【问题讨论】:
标签: android android-gradle-plugin
【问题讨论】:
标签: android android-gradle-plugin
我为什么要关心这个?
让您的应用能够构建但不附带不必要的东西。
在 gradle 中,我为什么要使用 compileOnly vs implementation/api?
compileOnly 的文档以一个用例为例:
Gradle 仅将依赖项添加到编译类路径中(它不会添加到构建输出中)。当您创建 Android 库模块并且在编译期间需要依赖项时,这很有用,但在运行时存在是可选的。也就是说,如果你使用这个配置,那么你的库模块必须包含一个运行时条件来检查依赖是否可用,然后优雅地改变它的行为,这样如果没有提供它仍然可以运行。这有助于通过不添加不重要的临时依赖项来减少最终 APK 的大小。此配置的行为与提供的一样(现已弃用)。
例如,考虑一个支持 Firebase FCM 和 Amazon ADM 但两者都不需要的推送消息库。如果它将两者都作为传递依赖项提供,它将不必要地使应用程序膨胀。使用compileOnly 仍然可以构建库。使用该库的开发人员可以选择实际使用哪些依赖项。
另一个例子是不需要随应用程序提供的编译时注释。
【讨论】: