程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了非 android 模块清洁架构设置中的 Hilt大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决非 android 模块清洁架构设置中的 Hilt?

开发过程中遇到非 android 模块清洁架构设置中的 Hilt的问题如何解决?下面主要结合日常开发的经验,给出你关于非 android 模块清洁架构设置中的 Hilt的解决方法建议,希望对你解决非 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 证明了这个想法。

,

这是我对干净架构和刀柄的打击

  • data 是一个纯 java 模块,具有数据源接口、存储库接口和模型

    非 android 模块清洁架构设置中的 Hilt

  • domain 是具有用例接口和实体的纯 Java 模块

    非 android 模块清洁架构设置中的 Hilt

  • framework 是一个 android 模块,可以在其中找到数据源、存储库和用例的实际实现。这是声明 Hilt Modules 的同一个模块

    非 android 模块清洁架构设置中的 Hilt

  • app 是以域和框架作为依赖项的应用模块

大佬总结

以上是大佬教程为你收集整理的非 android 模块清洁架构设置中的 Hilt全部内容,希望文章能够帮你解决非 android 模块清洁架构设置中的 Hilt所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。