问题:数据绑定不适用于运行时仅gradle依赖项

希望有人可以解释为什么在将特定模块声明为runtimeonly与将其声明为implementation时每个模块的数据绑定似乎不起作用(返回null)

例如

说我有一些要包括或排除的功能模块(类似于动态功能模块),但是由于其他原因,我现在不使用它,这只是一个实验。因此,我们的想法是将多个组件从主应用程序中分离出来,这些组件仅在运行时才可用,换句话说,应用程序与任何附加功能之间几乎没有耦合,并且在我将数据绑定添加到混合中之前,这种方法可以正常工作,以*Binding cannot be null崩溃。

问题:数据绑定不适用于运行时仅gradle依赖项

我可以使用此设置的唯一方法是从runtimeonly切换到implementation,并根据到目前为止的知识,runtimeonly和{{1}之间的区别}位于gradle website上:

问题:数据绑定不适用于运行时仅gradle依赖项

所以我的问题是为什么会发生这种情况,在模块中启用数据绑定是否要求将模块配置为impelentation?也许我做错了所有事情,并且误解了implementation的目的。

  

预先感谢您,如果问题不够全面,我们深表歉意

violawu 回答:问题:数据绑定不适用于运行时仅gradle依赖项

  • 实现:大多数情况下,我们使用实现配置。它向用户隐藏了模块的内部依赖性,以避免意外使用任何传递性依赖性,从而加快了编译速度,并减少了重新编译的时间。

  • runtimeOnly::当我们想在运行时(在最终版本中)更改或交换库的行为时。

对于runtimeOnly,您需要两个依赖关系,一个依赖关系将帮助您在编译时访问代码,另一个依赖关系将在运行时替换/使用。

运行时示例:

SLF4J是runtimeOnly的最佳示例之一,我们将使用slf4j-api作为实现配置,并将slf4j-api的实现(例如slf4j-log4j12或logback-classic等)用作runtimeOnly配置。

我已经创建了一个 post ,并且通过 Working Example: source code

对每个人都有深入的了解

https://medium.com/@gauraw.negi/how-gradle-dependency-configurations-work-underhood-e934906752e5

本文链接:https://www.f2er.com/3129239.html

大家都在问