Рукоять кинжала: «ComponentProcessingStep не удалось обработать… потому что «<package>.health.HealthRepo» не удалось разAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Рукоять кинжала: «ComponentProcessingStep не удалось обработать… потому что «<package>.health.HealthRepo» не удалось раз

Сообщение Anonymous »

Описание
Я сталкиваюсь с ошибкой компиляции Hilt только при создании сборки выпуска (с minifyEnabled true).
Отладочная сборка компилируется и работает нормально.
Сообщение об ошибке:

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

error: ComponentProcessingStep was unable to process '
.ABCDApplication_HiltComponents.SingletonC' because '.health.HealthRepo' could not be resolved.

Dependency trace:
=> element (CLASS): .health.HealthServiceImpl
=> element (CONSTRUCTOR): HealthServiceImpl(.health.HealthRepo, kotlinx.coroutines.CoroutineDispatcher)
=> type (EXECUTABLE constructor): (.health.HealthRepo, kotlinx.coroutines.CoroutineDispatcher)void
=> type (ERROR parameter type): .health.HealthRepo

If type '.health.HealthRepo' is a generated type, check above for compilation errors that may have prevented the type from being generated.
Otherwise, ensure that type '.health.HealthRepo' is on your classpath.
Что я пробовал
  • Проверил, что HealthRepo и HealthServiceImpl правильно компилируются при отладке.
  • Проверил, что HealthRepo — это интерфейс, определенный в другом модуле Gradle (bhpApi), и он добавлен как зависимость реализации в модуль приложения.
  • Пытался очистить и пересобрать проект.
  • Попытался добавить правила хранения ProGuard для Dagger/Hilt:
    -keep class dagger.hilt.** { *;
    -сохранить класс кинжала.** { *;
    -сохранить класс javax.inject.** { *;
    -keepattributes Annotation
Но сборка выпуска по-прежнему завершается с той же ошибкой Hilt ComponentProcessingStep.
Настройка Build.gradle

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

buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Вопрос
Почему Hilt не может разрешить HealthRepo только в сборке выпуска?
Может ли R8 удалять сгенерированные классы Dagger/Hilt или ссылки на интерфейсы между модулями?
Как я могу настроить ProGuard или мои настройки Gradle, чтобы Hilt правильно распознавал HealthRepo и связанные привязки во время выпускных сборок?

Подробнее здесь: https://stackoverflow.com/questions/797 ... se-package
Ответить

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

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

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

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

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