当前位置: 首页 > 知识库问答 >
问题:

非Android模块clean架构设置中的Hilt

淳于祺
2023-03-14
implementation "com.google.dagger:hilt-core:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
@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() {
    ...
}

我的问题

这种方法是“最佳实践”吗?或者是更好地使库成为一个Android库,以便我可以范围依赖于ViewModel?我更愿意让它成为一个只支持Java的库。

共有1个答案

慎星纬
2023-03-14

我知道的一个常见做法是将所有模块的依赖项配置移动到app模块(因为hilt是在框架级别上使用的)。然后可以使用java inject库在纯java库(例如域层)中注入依赖项。

因此,在appbuild.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"

domainbuild.gradle文件中,您将拥有:

implementation "javax.inject:javax.inject:$javaInjectVersion"
 类似资料:
  • 我刚刚读了应用程序架构指南。在这篇文章中,google演示了使用新的android架构组件构建健壮的android应用程序的基本指南。如今年的Google I/O所示,一个应用程序应该有4层: 在这种情况下,依赖关系从上到下流动,较高层只知道直接位于它们下面的组件,例如。UI控制器只知道ViewModel,ViewModel只知道存储库等。 因此,我观看了视频,完成了相应的codelabs,然后学

  • 我对SQL比较熟悉,对如何最好地表示以下内容的实体关系图有点困惑: 假设我们有一个公司。公司有员工。员工有经理(多名员工对1名经理)。管理者是雇员(但管理者不能管理自己)。每个员工/经理可以在多个项目上(一个EMP/经理对多个项目)。此外,员工/经理在公司中有许多角色(1个EMP/经理到许多角色)。 我最困惑的是如何将经理嵌入员工内部。我是否需要包含任何约束,以确保没有经理管理自己? 下面是我到目

  • 我有一个现有的Android项目,在其中我创建了一个新的(offlineservicelibrary)(文件/new/new module/Android library)。在这个库中,我想创建一个房间数据库。 我遵循https://developer.android.com/training/data-storage/room并为我的数据库创建了Entity(OfflineData)和DAO(O

  • 我有一个将两个表连接在一起的查询。我在kotlin中创建了一个数据类,其中包含我需要查询返回的每个表的变量。当我在DAO查询中更新模型时,我显然必须通过更新模型类的干净拱的层。我到了映射实体到域层的Mapper类。这里我遇到了一个问题,因为这个函数只能扩展到一个房间实体,我的数据类引用了两个表中的值。 界面 类 所以这个函数缺少表B中的所有值,因为我不能在mapper函数中扩展两个表。人们如何解决

  • 问题内容: 现在,我想将我的ObjC框架迁移到Swift,并遇到以下错误: 引用指向仅定义协议的头文件,我在某些类中使用此头文件来使用此协议。 似乎与模块功能有关,但目前尚不清楚如何解决,您知道解决方案吗? 更新: 这是Swift编译器错误。 更新2: 一种快速解决方案(但不能解决根本原因)是将以下设置设置为yes:CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAME

  • 现在我想将我的ObjC框架迁移到Swift,我得到了以下错误: 引用是一个头文件,它只是定义一个协议,我在某些类中使用此头文件来使用此协议。 似乎与模块功能有关,但目前还不清楚如何修复,你知道解决方案吗? 更新: 这是一个 Swift 编译器错误。 更新 2: 一个快速解决方法(但不能解决根本原因)是将以下设置设置为YES:CLANG _ ALLOW _ NON _ MODULAR _ INCLU