Android Studio не перестраивается с помощью Hilt, но кнопка «Выполнить» работаетAndroid

Форум для тех, кто программирует под Android
Anonymous
Android Studio не перестраивается с помощью Hilt, но кнопка «Выполнить» работает

Сообщение Anonymous »

Недавно я добавил новый класс, который будет предоставлен Hilt как синглтон. Но всякий раз, когда я нажимаю Сборка -> Перестроить проект в Android Studio, я получаю следующую ошибку:

Код: Выделить всё

error: [Dagger/MissingBinding] com.example.core.api.service.AlertMainService cannot be provided without an @Provides-annotated method.
Последний день или около того я рвал на себе волосы, пытаясь исправить эту ошибку. В приложении нет нескольких модулей, поэтому проблем с этим нет. Я попробовал очистить проект, перезапустить Android Studio, аннулировать кеши, удалить каталог gradle в проекте, обновить зависимости, обновить саму Android Studio и перезапустить мой Mac. Ничего страшного.
В какой-то момент я просто решил попробовать еще раз очистить проект и нажать кнопку Выполнить, чтобы запустить его на своем устройстве... и это сработало. !
Но почему??? Почему я могу собрать его и запустить на устройстве, но не пересобрать?
К сожалению, я не могу просто игнорировать эту проблему, поскольку она также не будет должным образом встроена в нашу CI.
В модуле это выглядит так:

Код: Выделить всё

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

@Singleton
@Provides
fun provideAlertMainService(
alertAuthenticationInterceptor: AlertAuthenticationInterceptor,
hostSelectionInterceptor: HostSelectionInterceptor,
prefs: SharedPrefs
): AlertMainService {
...
}
Это почти идентично другому одноэлементному классу под названием AlertService, который Hilt уже предоставляет в том же модуле без каких-либо проблем:

Код: Выделить всё

    @Singleton
@Provides
fun provideAlertService(
alertAuthenticationInterceptor: AlertAuthenticationInterceptor,
hostSelectionInterceptorAlert: HostSelectionInterceptorAlert,
prefs: SharedPrefs
): AlertService {
...
}
Я подумал, что, возможно, проблема в том, что у них одинаковые параметры, поэтому я попробовал изменить их имена и даже добавить/удалить параметры. Никаких изменений в поведении.
Класс, в который я их внедряю, выглядит так:

Код: Выделить всё

@Singleton
class AlertRepository @Inject constructor(
private val alertService: AlertService,
private val alertMainService: AlertMainService
) {
...
}
Если я удалю внедрение AlertMainService, он будет нормально собираться.
Это какая-то ошибка с Hilt? В чем тут дело?

Подробнее здесь: https://stackoverflow.com/questions/789 ... tton-works

Вернуться в «Android»