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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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