studio medium google for dummies compiler annotationprocessor android dependency-injection dagger-2

medium - dagger android processor



Dagger2 no genera archivos "Dagger_" (3)

Esta pregunta ya tiene una respuesta aquí:

Im usando dagger 2 desde hace un tiempo, pero hoy, al intentar compilar, obtuve este error:

Error: (13, 31) error: no se puede encontrar la clase de símbolo Dagger_GlobalComponent

Error: (38, 21) error: no se puede encontrar la variable de símbolo Dagger_GlobalComponent

Así que aquí está el código:

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(); }}

Y dependencias de 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'' ...

¿Alguna solución? Ya intenté: Limpiar, Reconstruir, Cambiar versiones de dependencia, también eliminar el caché de Gradle y reinstalar Android Studio.

Si ayuda también tiene el mismo error con este proyecto de ejemplo:

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

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



Traté de seguir el tutorial de Dagger2 en tutsplus here y tuve el mismo problema al intentar usar la sintaxis de guión bajo (Dagger_ClassnameComponent).

Como han dicho otros, las nuevas API de Dagger no usan esa sintaxis de subrayado, sino que simplemente usan la sintaxis DaggerClassnameComponent. Sin embargo, al intentar usar la nueva sintaxis en mi aplicación simple, no se encontró la clase DaggerClassnameComponent. Creo que debería estar ubicado en la carpeta de la aplicación / construir / generar / fuente / apt / debug / packagename / component.

Al principio, no tenía ningún archivo generado en la carpeta mencionada anteriormente. Sin embargo, mi solución fue limpiar y construir el proyecto, y luego pude usar la clase Component como se esperaba.


Dagger 2 ya se ha lanzado, por lo que tendrá que cambiar sus dependencias de Gradle:

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