如何使用新的gradle实现在Android特定模块中设置Dagger私有依赖关系?
我正在将项目的gradle设置迁移到新的如何使用新的gradle实现在Android特定模块中设置Dagger私有依赖关系?,android,android-gradle-plugin,dagger-2,dagger,Android,Android Gradle Plugin,Dagger 2,Dagger,我正在将项目的gradle设置迁移到新的api和implementation配置,而不是现在。我试图尽可能多地使用实现,但我遇到了一个困难 我有一个Android库模块,我在其中设置了一个Dagger模块,其中包含一些私有依赖项。其中之一是RxLocationsingleton: @Singleton @Provides RxLocation provideRxLocation(@LocationContext Context context) { return new RxLocati
api
和implementation
配置,而不是现在。我试图尽可能多地使用实现
,但我遇到了一个困难
我有一个Android库模块,我在其中设置了一个Dagger模块,其中包含一些私有依赖项。其中之一是RxLocation
singleton:
@Singleton
@Provides
RxLocation provideRxLocation(@LocationContext Context context) {
return new RxLocation(context);
}
这个依赖关系只在同一个dagger模块中使用,作为我实际想要公开的内容的依赖关系。例如:
@Singleton
@Provides
Observable<Location> provideLocationUpdates(RxLocation rxLocation, LocationRequest locationRequest) {
//build observable with RxLocation here
}
@Singleton
@提供
可观察的ProviderLocationUpdate(RxLocation RxLocation,LocationRequest LocationRequest){
//在此处使用RxLocation构建可观察
}
我不希望RxLocation“泄漏”到其他模块,因此我尝试使用实现
配置导入它。然而,Dagger在我的应用程序模块中生成了一个LocationModule\u ProvideRxLocationFactory
,它显然在那里导入了RxLocation
,破坏了构建
除了在我的模块中手动设置
RxLocation
实例(无匕首注释)之外,我还能做些什么吗?请澄清您试图实现的目标。Dagger会生成类,是的,为什么是私有的?为何你说的暴露是什么意思?怎么用?为什么/如何破坏构建@Singleton
通常标记依赖项的根,因此,如果您想“隐藏”某些内容,则向其添加内容似乎是一种违反直觉的方式。@DavidMedenjak谢谢。>为什么是私人的?因为我不想在Dagger模块之外暴露这种依赖性。我只想使用Dagger的便捷方式提供依赖项,但仅限于同一模块内的其他依赖项。>你说的暴露是什么意思?我所说的暴露是指将其暴露在匕首模块之外。在上面的示例中,我可以执行@injectrxlocation-RxLocation代码>我正在注入使用该模块的组件的任何地方。如何预防?希望这能澄清一点。请澄清你想要实现的目标。Dagger会生成类,是的,为什么是私有的?为何你说的暴露是什么意思?怎么用?为什么/如何破坏构建@Singleton
通常标记依赖项的根,因此,如果您想“隐藏”某些内容,则向其添加内容似乎是一种违反直觉的方式。@DavidMedenjak谢谢。>为什么是私人的?因为我不想在Dagger模块之外暴露这种依赖性。我只想使用Dagger的便捷方式提供依赖项,但仅限于同一模块内的其他依赖项。>你说的暴露是什么意思?我所说的暴露是指将其暴露在匕首模块之外。在上面的示例中,我可以执行@injectrxlocation-RxLocation代码>我正在注入使用该模块的组件的任何地方。如何预防?希望这能澄清一点。