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. :
- ¿Hay documentación sobre cuándo Dagger regresa a la reflexión al inyectar dependencias?
- Bean and EBean conception Anotaciones para Android
- Android Dagger Dependency Injection falla en campos privados
- ¿Cómo usar la biblioteca dagger en el proyecto de la biblioteca android?
- Daga: Inyectar campo en el pojo proporcionado
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.
- Singletons en Dagger 1.x
- Dagger 2 Tercera parte Inyección Android
- Inyección de clase genérica con Dagger
- Dagger para Android: Inyección de una actividad en el gráfico de objetos después de llamar a setContentView
- Dagger y inyecciones anidadas
- ¿Se puede utilizar Spring Framework en aplicaciones android?
- Dagger no puede encontrar miembros inyectables en un módulo
- Cómo compartir Dagger2 Subcomponente entre activies
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 }
- Dagger 2 en Android @Singleton clase anotada que no se inyecta
- ¿Hay alguna forma en la que una aplicación pueda comprobar si se le permite acceder a las notificaciones?