Android Dagger-Hilt 忽略@Provides 方法

Android Dagger-Hilt ignores @Provides method

我有一个 NetworkModule 和一个 RepositoryModule。在我的 NetworkModule 中,我有创建改造服务实例的方法(也有创建 okHttpClientgson 的方法,但这些不相关):

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {

    @Singleton
    @Provides
    fun provideRetrofit(okHttpClient: OkHttpClient, gson: Gson): Retrofit {
        return Retrofit.Builder()
            .addConverterFactory(ScalarsConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .baseUrl("null")
            .client(okHttpClient)
            .build()
    }

    @Singleton
    @Provides
    fun provideApiService(retrofit: Retrofit): ApiService {
        return retrofit.create(ApiService::class.java)
    }
}

然后我想在我的 RepositoryModule 中使用 ApiService,但 Hilt 只是忽略了 NetworkModule 中它的 Provides 方法甚至存在。我查看了生成的代码,但找不到 provideApiService 的提及。 Android Studio 还将其标记为未使用。我确定它应该可以工作,Android Studio 甚至在相关文件中显示它:

这里是 NetworkModule:

@Module
@InstallIn(SingletonComponent::class)
object RepositoryModule {

    @Singleton
    @Provides
    fun provideLoginRepository(
        userMessage: MutableLiveData<Message>,
        apiService: ApiService
    ): LoginRepository {
        return LoginRepositoryImpl(userMessage, apiService)
    }
}

当我尝试构建它时,出现此错误:

error: [Dagger/MissingBinding] LoginRepository cannot be provided without an @Provides-annotated method.

起初似乎存储库无法注入,但我已将它指向 ApiService,因为如果我从 provideLoginRepository 方法参数中删除它,它会成功构建。

我已经尝试解决这个问题好几个小时了,几乎什么都试过了。如果有人知道这是怎么回事,我会非常感激。提前致谢。

编辑:在 provideLoginRepository 函数中创建 ApiService 的实例使一切正常并且应用程序成功构建,这不是所需的修复:

@Singleton
@Provides
fun provideLoginRepository(
    userMessage: MutableLiveData<Message>,
    retrofit: Retrofit
): LoginRepository {
    return LoginRepositoryImpl(userMessage, retrofit.create(ApiService::class.java))
}

好的,我已经解决了这个问题。事实证明 java 不支持(与 kotlin 相反)包名称中的 interface。你猜怎么着,ApiService 在一个名为 interface 的包中。重命名包后,一切正常。