Square Dagger IllegalStateException: No se pudo cargar el adaptador de módulo para la clase MyApplicationModule

Estoy usando eclipse y Dagger 1.2.2 para mi proyecto de Android. Logré implementar una aplicación de prueba con Dagger. Pero con mi aplicación "real" consigo:

Java.lang.RuntimeException: No se puede crear la aplicación app.MyApplication: java.lang.IllegalStateException: No se pudo cargar el adaptador de módulo para la clase app.MyApplicationModule. Asegúrese de que se ha generado código para este módulo. :

FATAL EXCEPTION: main java.lang.RuntimeException: Unable to create application app.MyApplication: java.lang.IllegalStateException: Module adapter for class app.MyApplicationModule could not be loaded. Please ensure that code generation was run for this module. at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4687) at android.app.ActivityThread.access$1400(ActivityThread.java:159) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: Module adapter for class app.MyApplicationModule could not be loaded. Please ensure that code generation was run for this module. at dagger.internal.FailoverLoader$1.create(FailoverLoader.java:45) at dagger.internal.FailoverLoader$1.create(FailoverLoader.java:40) at dagger.internal.Memoizer.get(Memoizer.java:56) at dagger.internal.FailoverLoader.getModuleAdapter(FailoverLoader.java:57) at dagger.internal.Modules.loadModules(Modules.java:43) at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174) at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:138) at dagger.ObjectGraph.create(ObjectGraph.java:129) at app.MyApplication.onCreate(MyApplication.java:17) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4684) ... 10 more 

Se trata de MyApplication.java :

 public class MyApplication extends Application implements InjectableApplication { private ObjectGraph objectGraph; @Override public void onCreate() { super.onCreate(); objectGraph = ObjectGraph.create(new MyApplicationModule(this)); objectGraph.inject(this); } @Override public void inject(Object o) { objectGraph.inject(o); } public ObjectGraph getObjectGraph() { return objectGraph; } } 

Este es mi AndroidManifest.xml :

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="app.MyApplication" > <activity android:name="app.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

También incluí los tarros de la daga a la trayectoria de la estructura ya la trayectoria de la fábrica.

Para cualquier persona que podría haber tenido este problema como lo hice. La edición que estaba haciendo frente es que no agregué una dependencia en mi archivo de la estructura del gradle para permitir que la daga haga la generación de código ontop de mis clases:

Agrega esto:

 apt 'com.squareup.dagger:dagger-compiler:1.2.2' 

Actualización: si no sabe dónde está el complemento apt, puede instalarlo en su archivo gradle de proyectos. Mis dependencias tienen este aspecto:

 dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4+' } 

Encontré mi error:

Debe comprobar " Habilitar configuración específica del proyecto " para "Compilador de Java" y "Procesamiento de anotación". Ahora mi aplicación lanza muchos otros errores, pero el trabajo de generación de código Dagger funciona!

Si utiliza multiDex, no olvide activarlo en YourApp.class

  @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

Eso resolvió mi problema similar.

Proyecto build.gradle:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4+' } } allprojects { repositories { jcenter() } } 

App build.gradle:

 buildscript { repositories { mavenCentral() ... } ... } ... apply plugin: 'com.android.application' apply plugin: 'android-apt' ... dependencies { ... compile 'com.squareup.dagger:dagger:1.2.2' provided 'com.squareup.dagger:dagger-compiler:1.2.2' apt 'com.squareup.dagger:dagger-compiler:1.2.2' ... } configurations { provided } 
  • Ampliación de ObjectGraph con módulo de sustitución
  • Inyectar dependencias en singleton con Dagger?
  • ¿Se aplican también a Dagger "Evita los marcos de inyección de dependencia" en la Guía de memoria de Android?
  • Dagger 2 - Inyectar bibliotecas de terceros en servicios y actividades de Android
  • Módulo dependiendo de otro módulo en Dagger
  • Uso de Dagger para inyección de dependencia en constructores
  • Dagger con Android: ¿Cómo puedo inyectar el contexto actual?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.