Android Dagger - Hilt ViewModel 无法检测依赖项
Android Dagger - Hilt ViewModel can't detect dependency
我在 运行 应用程序时遇到运行时问题。我是匕首和刀柄的新手。请帮我解决这个问题。
构建问题:
error: [Dagger/DependencyCycle] Found a dependency cycle:
public abstract static class SingletonC implements AppController_GeneratedInjector,
^
com.hilt.hiltsampleproject.app.ApiHelper is injected at
com.hilt.hiltsampleproject.app.ApiHelperImpl(apiHelper)
com.hilt.hiltsampleproject.app.ApiHelperImpl is injected at
com.hilt.hiltsampleproject.app.AppModule.provideApiHelper(apiHelper)
com.hilt.hiltsampleproject.app.ApiHelper is injected at
com.hilt.hiltsampleproject.repositories.MainRepository(apiHelper)
com.hilt.hiltsampleproject.repositories.MainRepository is injected at
com.hilt.hiltsampleproject.ui.posts.PostViewModel(mainRepository)
javax.inject.Provider<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory(viewModelProvider)
com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
com.hilt.hiltsampleproject.ui.posts.PostFragment.viewModelFactory
com.hilt.hiltsampleproject.ui.posts.PostFragment is injected at
com.hilt.hiltsampleproject.ui.posts.PostFragment_GeneratedInjector.injectPostFragment(com.hilt.hiltsampleproject.ui.posts.PostFragment) [com.hilt.hiltsampleproject.app.AppController_HiltComponents.SingletonC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityRetainedC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.FragmentC]
Gradle 依赖关系:
implementation 'com.google.dagger:hilt-android:2.33-beta'
kapt 'com.google.dagger:hilt-compiler:2.33-beta'
// Hilt Jetpack Integrations
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0-beta01'
后片段:
private val postViewModel: PostViewModel by viewModels()
后视图模型:
@HiltViewModel class PostViewModel @Inject constructor(private val mainRepository: MainRepository) : ViewModel()
主存储库:
class MainRepository @Inject constructor(
private val apiHelper: ApiHelper)
ApiHelper:
interface ApiHelper {
suspend fun getPosts(): Response<Posts>}
我查看了 github 示例。
问题是您有一个 DependencyCycle:
class ApiHelperImpl @Inject constructor(
private val apiHelper: ApiHelper
) : ApiHelper {
...
}
您正在尝试 Construct/Provide 一个 ApiHelper
的实例,它也采用 ApiHelper
的一个实例,因此,要构造第一个 ApiHelper,Hilt/Dagger 必须构造依赖关系,所以这个 ApiHelperImpl 需要一个 ApiHelper...它需要一个 ApiHelper...它需要一个 ApiHelper...你希望得到这个想法:)
我在 运行 应用程序时遇到运行时问题。我是匕首和刀柄的新手。请帮我解决这个问题。 构建问题:
error: [Dagger/DependencyCycle] Found a dependency cycle:
public abstract static class SingletonC implements AppController_GeneratedInjector,
^
com.hilt.hiltsampleproject.app.ApiHelper is injected at
com.hilt.hiltsampleproject.app.ApiHelperImpl(apiHelper)
com.hilt.hiltsampleproject.app.ApiHelperImpl is injected at
com.hilt.hiltsampleproject.app.AppModule.provideApiHelper(apiHelper)
com.hilt.hiltsampleproject.app.ApiHelper is injected at
com.hilt.hiltsampleproject.repositories.MainRepository(apiHelper)
com.hilt.hiltsampleproject.repositories.MainRepository is injected at
com.hilt.hiltsampleproject.ui.posts.PostViewModel(mainRepository)
javax.inject.Provider<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory(viewModelProvider)
com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
com.hilt.hiltsampleproject.ui.posts.PostFragment.viewModelFactory
com.hilt.hiltsampleproject.ui.posts.PostFragment is injected at
com.hilt.hiltsampleproject.ui.posts.PostFragment_GeneratedInjector.injectPostFragment(com.hilt.hiltsampleproject.ui.posts.PostFragment) [com.hilt.hiltsampleproject.app.AppController_HiltComponents.SingletonC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityRetainedC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.FragmentC]
Gradle 依赖关系:
implementation 'com.google.dagger:hilt-android:2.33-beta'
kapt 'com.google.dagger:hilt-compiler:2.33-beta'
// Hilt Jetpack Integrations
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0-beta01'
后片段:
private val postViewModel: PostViewModel by viewModels()
后视图模型:
@HiltViewModel class PostViewModel @Inject constructor(private val mainRepository: MainRepository) : ViewModel()
主存储库:
class MainRepository @Inject constructor(
private val apiHelper: ApiHelper)
ApiHelper:
interface ApiHelper {
suspend fun getPosts(): Response<Posts>}
我查看了 github 示例。
问题是您有一个 DependencyCycle:
class ApiHelperImpl @Inject constructor(
private val apiHelper: ApiHelper
) : ApiHelper {
...
}
您正在尝试 Construct/Provide 一个 ApiHelper
的实例,它也采用 ApiHelper
的一个实例,因此,要构造第一个 ApiHelper,Hilt/Dagger 必须构造依赖关系,所以这个 ApiHelperImpl 需要一个 ApiHelper...它需要一个 ApiHelper...它需要一个 ApiHelper...你希望得到这个想法:)