Подтвердить что ты не робот

Dagger2 не генерирует файлы "Dagger_"

Я использую кинжал 2 с течением времени, но сегодня попытка компиляции получила эту ошибку:

Ошибка: (13, 31) ошибка: не удается найти класс символов Dagger_GlobalComponent

Ошибка: (38, 21) ошибка: не удается найти символьную переменную Dagger_GlobalComponent

Итак, вот код:

public class MyAppApplication extends Application {

private static GlobalComponent component;

@Override
public void onCreate() {
    super.onCreate();

    component = Dagger_GlobalComponent.builder()
            .busModule(new BusModule())
            .syncModule(new SyncModule())
            .serviceModule(new ServiceModule())
            .contextModule(new ContextModule(this))
            .persistenceModule(new PersistenceModule(this))
            .build();
}}

И gradle зависимости:

...
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
...

Любые решения? Уже пытались: очистить, перестроить, изменить версии dependecy, также удалить кеш gradle и переустановить Android Studio.

Если это помогает также получить ту же ошибку с этими примерами проектов:

https://github.com/gk5885/dagger-android-sample

https://github.com/mgrzechocinski/dagger2-example

4b9b3361

Ответ 1

Я пытался следовать учебнику Dagger2 на tutsplus здесь и столкнулся с той же проблемой при попытке использовать синтаксис подчеркивания (Dagger_ClassnameComponent).

Как утверждали другие, новые API-интерфейсы Dagger не используют этот синтаксис подчеркивания, а скорее используют синтаксис DaggerClassnameComponent. Однако при попытке использовать новый синтаксис в моем простом приложении класс DaggerClassnameComponent не найден. Я считаю, что он должен находиться в папке app/build/generated/source/apt/debug/packagename/component.

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

Ответ 2

Теперь был выпущен кинжал 2, поэтому вам нужно будет изменить свои зависимости gradle:

compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'