Android 问题:数据绑定不使用仅限运行时的渐变依赖项
希望有人能解释为什么当特定模块声明为Android 问题:数据绑定不使用仅限运行时的渐变依赖项,android,gradle,android-databinding,Android,Gradle,Android Databinding,希望有人能解释为什么当特定模块声明为runtimeOnly时,与声明为implementation时,每个模块的数据绑定似乎不起作用(返回null) 例如 假设我有一些功能模块,我想包括或排除(类似于动态功能模块),但我现在不使用它,因为其他原因我将不进行讨论,这更像是一个实验。因此,我们的想法是将多个组件从主应用程序中分离出来,这些组件只在运行时可用,因此换句话说,应用程序和任何附加功能之间都没有耦合,在我将数据绑定添加到组合中之前,这一切都可以正常工作,*绑定不能为空 我让这个设置工作的唯
runtimeOnly
时,与声明为implementation
时,每个模块的数据绑定似乎不起作用(返回null)
例如
假设我有一些功能模块,我想包括或排除(类似于动态功能模块),但我现在不使用它,因为其他原因我将不进行讨论,这更像是一个实验。因此,我们的想法是将多个组件从主应用程序中分离出来,这些组件只在运行时可用,因此换句话说,应用程序和任何附加功能之间都没有耦合,在我将数据绑定添加到组合中之前,这一切都可以正常工作,*绑定不能为空
我让这个设置工作的唯一方法是从runtimeOnly
切换回implementation
,据我所知,runtimeOnly
和implementation
之间的区别如下:
因此,我的问题是为什么会发生这种情况,在模块中启用数据绑定是否需要为模块配置实现
?或者可能我做得都不对,并且误解了runtimeOnly
的目的
提前谢谢,如果问题不够全面,请道歉
- 实现:我们主要使用实现配置。它隐藏了模块对其使用者的内部依赖关系,以避免意外使用任何可传递依赖关系,从而加快编译速度,减少重新编译
- 仅限运行时:当我们希望在运行时(在最终构建中)更改或交换库的行为时
对于runtimeOnly,您需要两个依赖项—一个帮助您在编译时访问代码,另一个将在运行时替换/使用
运行时示例:
SLF4J是runtimeOnly的最佳示例之一,我们将使用SLF4J api作为实现配置,并将SLF4J api的实现(如SLF4J-log4j12或logback classic等)作为runtimeOnly配置
我创建了一个,深入了解了