Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用新的gradle实现在Android特定模块中设置Dagger私有依赖关系?_Android_Android Gradle Plugin_Dagger 2_Dagger - Fatal编程技术网

如何使用新的gradle实现在Android特定模块中设置Dagger私有依赖关系?

如何使用新的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

我正在将项目的gradle设置迁移到新的
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我正在注入使用该模块的组件的任何地方。如何预防?希望这能澄清一点。