Библиотека AssitedInject от Square на самом деле представляет собой процессор аннотаций, который генерирует модули Dagger 2 .Dagger 2 также является процессором аннотаций.
И, как я знаю, нет способа контролировать порядок выполнения процессоров .
В этом примере (см. Фрагмент ниже) вы можетеувидеть, что модуль имеет зависимость от сгенерированного класса AssistedInject AssistedInject_MainModule
.Так что в случае, если Dagger 2 будет запущен первым, сборка не удастся, потому что на данный момент AssistedInject_MainModule
не существует.
Но его можно скомпилировать.Как это работает?
@AssistedModule
@Module(includes = AssistedInject_MainModule.class)
public abstract class MainModule {
@Provides static @Exclamation String provideExclamation() {
return "!";
}
}