java.lang.IllegalStateException:模块适配器

时间:2015-05-21 04:36:54

标签: android android-studio proguard

大家好我想在android中使用ObjectGraph我正在使用以下

applicationGraph = ObjectGraph.create(getModules().toArray());
applicationGraph.inject(this);

但它给我的错误是:

java.lang.RuntimeException: Unable to create application com.my.mynews.app.MyApplication: java.lang.IllegalStateException: Module adapter for class com.my.mynews.b.b could not be loaded. Please ensure that code generation was run for this module.
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4521)
        at android.app.ActivityThread.access$1500(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1339)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: java.lang.IllegalStateException: Module adapter for class com.my.mynews.b.b could not be loaded. Please ensure that code generation was run for this module.
        at a.a.j.a(Unknown Source)
        at a.a.j.a(Unknown Source)
        at a.a.x.b(Unknown Source)
        at a.a.i.a(Unknown Source)
        at a.a.z.a(Unknown Source)

我的build.gradle就像:

configurations {
 apt
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.+'
compile 'com.android.support:appcompat-v7:21.+'
compile 'com.jakewharton:butterknife:5.0.+'
compile 'com.jakewharton.timber:timber:2.2.+'
compile 'com.squareup.dagger:dagger:1.2.+'
//provided 'com.squareup.dagger:dagger-compiler:1.2.+'
apt 'com.squareup.dagger:dagger-compiler:1.2.+'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.retrofit:retrofit:1.6.1'
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.4.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.+'
compile 'com.github.satyan:sugar:1.3'
compile 'com.pnikosis:materialish-progress:1.2'
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.google.android.gms:play-services-analytics:7.0.0'

compile files('libs/volley.jar')
}

如果我取消注释上面的依赖项并注释apt并生成minifyEnabled false那么它就能完美运行。但我希望减少代码大小,因此我已完成minifyEnabled true和应用程序崩溃。

任何建议将不胜感激。提前致谢

1 个答案:

答案 0 :(得分:1)

我自己遇到了类似的问题。不幸的是,Dagger 1.2+似乎不能与proguard的minifyEnabled很好地配合。所以我能找到的最佳选择是:

  1. 设置minifyEnabled为false并处理它
  2. 升级到Dagger 2.0(这是指南:http://frogermcs.github.io/dagger-1-to-2-migration/
  3. 有些人幸运地降级到Dagger 1.0.1并完全取消了匕首编译器(https://stackoverflow.com/a/23954164)。