Кинжал 2 - Ошибка компиляции области видимости компонента - PullRequest
0 голосов
/ 20 сентября 2018

Простая аннотация области действия:

@Scope
@Retention(RUNTIME)
public @interface SimpleScope {
}

Простой компонент:

@SimpleScope
@Component
public interface SimpleComponent {
}

Ошибка компилятора:

error: Scoping annotations are only allowed on concrete types and 
@Provides methods

1 Ответ

0 голосов
/ 20 сентября 2018

Ошибка компилятора на самом деле исходит от процессора аннотаций Dagger 1.В частности, здесь: Кинжал 1 ValidationProcessor .Если обработчик аннотации видит, что любой интерфейс аннотирован javax.inject.Scope, он сообщает об ошибке.Даже если Dagger 1 не использует интерфейс или область видимости.

В настоящее время мы выполняем миграцию с Dagger 1 на Dagger 2, и, следовательно, оба процессора аннотаций работают на модулях Gradle, которые используют Dagger 1 и Dagger 2.

Одним из решений является полная миграция каждого Gradle.модуль, так что оба процессора аннотаций не должны работать на одном и том же коде.Однако это не всегда легко.

Наше решение заключалось в том, чтобы разветвлять Dagger 1 и модифицировать ValidationProcessor, чтобы он не работал, если интерфейс является компонентом Dagger 2.

...