android - 为什么编译和运行时依赖很重要?
解决方案
我为什么要关心这个?
让您的应用程序构建但不附带不必要的东西。
在 gradle 中,我为什么要使用 compileOnly 与 implementation/api?
的文档以compileOnly
一个用例为例:
Gradle 仅将依赖项添加到编译类路径(它不会添加到构建输出中)。当您创建 Android 库模块并且在编译期间需要依赖项时,这很有用,但在运行时存在是可选的。也就是说,如果你使用这个配置,那么你的库模块必须包含一个运行时条件来检查依赖是否可用,然后优雅地改变它的行为,这样如果它没有提供它仍然可以运行。这有助于通过不添加不重要的临时依赖项来减少最终 APK 的大小。此配置的行为就像提供的一样(现在已弃用)。
例如,考虑一个支持 Firebase FCM 和 Amazon ADM 但两者都不需要的推送消息库。如果它将两者都作为传递依赖项提供,它将不必要地使应用程序膨胀。有了compileOnly
库还是可以建的。使用该库的开发人员可以选择实际使用的依赖项。
另一个示例可能是不需要随应用程序一起提供的编译时注释。
推荐阅读
- amazon-s3 - 如何处理从云端下载的浏览器缓存
- spring-data-jpa - 带有@OneToMany 的 JPA EmbeddedId - 无法使用 JOIN 进行查询
- firebase - 如果某人的数据不包含特定密钥,我如何防止他写?
- javascript - 页面加载后,Jquery,Django,Infinite Scroll 加载其余元素
- html - 将项目与对齐内容对齐
- angular - 如何在角度使用 3rd 方节点包?
- getstream-io - 在 getstream 中聚合更新组中的活动
- php - 使用 php 发送电子邮件后无法重定向到另一个页面
- mysql - 计算具有相同 MySQL 的 3 列值的行的出现次数
- python - Python:计算数字变化的次数