大佬教程收集整理的这篇文章主要介绍了非 android 模块清洁架构设置中的 Hilt,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个多模块的 androID 应用程序设置,它由一个数据、域和演示模块组成。域模块是纯 Java 的。我知道可以通过添加以下内容来支持非 androID 模块中的刀柄:
域 build.gradle
implementation "com.Google.dagger:hilt-core:$hilt_version"
kapt "com.Google.dagger:hilt-compiler:$hilt_version"
域模块提供了 UseCase 类的实现,这些实现应该注入到位于 Presentation (app) 模块中的 viewmodel 中。
域模块:
@module
@Installin(SingletonComponent::class)
// @Installin(viewmodelComponent::class)
object UseCaseModule {
@ProvIDes
// @viewmodelScoped
fun provIDeGetMovIEDetailsUseCase(
movIERepository: MovIERepository
): GetMovIEDetailsUseCase {
return GetMovIEDetailsUseCaseImpl(movIERepository)
}
}
演示模块:
@Hiltviewmodel
class MovIEDetailviewmodel @Inject constructor(
private val getMovIEDetailsUseCase: GetMovIEDetailsUseCase
) : viewmodel() {
...
}
由于 java-only 模块的性质,我不能使用 @Installin(viewmodelComponent::class)
注释。相反,我必须在 SingletonComponent::class
中安装依赖项。这也在 awnser here
我的问题
这种方法是“最佳实践”吗?还是将库设为 AndroID 库更好,以便我可以将依赖范围限定为 viewmodel?我更愿意将它保留为仅限 Java 的库。
我知道的一个常见做法是将所有模块的依赖配置移动到 app
模块(因为 Hilt
的使用是在框架级别)。然后你可以使用java注入库在纯java库(例如域层)中注入依赖项。
因此在您的 app
build.gradle
文件中,您将:
// hilt dependency
implementation "com.google.dagger:hilt-android:2.28-alpha"
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02'
kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha02'
kapt "com.google.dagger:hilt-android-compiler:2.28-alpha"
在您的 domain
build.gradle
文件中,您将拥有:
implementation "javax.inject:javax.inject:$javaInjectVersion"
总而言之,您“连接”域模块依赖项的文件应移至 app
模块。
Here's a project 证明了这个想法。
,这是我对干净架构和刀柄的打击
以上是大佬教程为你收集整理的非 android 模块清洁架构设置中的 Hilt全部内容,希望文章能够帮你解决非 android 模块清洁架构设置中的 Hilt所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。