在Android上使用Dagger2在某些设备上运行VerifyError

问题描述:

我有一个使用Dagger2的Android应用程序。我有一个名为AppComponent的Dagger组件,一个名为MainActivity的活动。 MainActivity有一个注入字段:@Inject MainDataModel mModel,并使用DaggerAppComponent.inject(mainActivity)来满足该字段。我把组件的init代码放在Application.onCreate()中。在运行期间,我在组件初始化期间遇到VerifyError在Android上使用Dagger2在某些设备上运行VerifyError

Fatal Exception: java.lang.VerifyError: com/myapp/a 
    at com.myapp.dagger.DaggerAppComponent.initialize(DaggerAppComponent.java:39) 
    at com.myapp.dagger.DaggerAppComponent.(DaggerAppComponent.java:29) 
    at com.myapp.dagger.DaggerAppComponent.(DaggerAppComponent.java:19) 
    at com.myapp.dagger.DaggerAppComponent$Builder.build(DaggerAppComponent.java:75) 
    at com.myapp.dagger.ComponentHolder.init(ComponentHolder.java:15) 
    at com.myapp.AppInitializer.init(AppInitializer.java:13) 
    at com.myapp.app.MyApp.onCreate(MyApp.java:341) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1069) 
    at com.lbe.security.service.core.client.b.x.callApplicationOnCreate(Unknown Source) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4699) 
    at android.app.ActivityThread.access$1300(ActivityThread.java:171) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1447) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5433) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
    at dalvik.system.NativeStart.main(NativeStart.java) 

与映射文件检查后,我发现导致VerifyError MSG的类是一个MainActivity_MembersInjector,它也是由匕首生成。

导致此问题的线路为this.mainActivityMembersInjector = MainActivity_MembersInjector_MembersInjector.create(MembersInjectors.noOp(), this.mainDataModelProvider);DaggerAppComponent

有一件事不是它只发生在某些设备上,但像小米2014011.任何想法如何解决这个问题?

+0

你有关于这个问题的消息吗? –

您是否已将multiDex启用到您的build.gradle配置中?

+0

是,启用multiDex。 –

+0

尝试不使用multiDex并让我知道您是否仍然遇到此问题。同时你可以在这里看看,问题与Dagger1有关,但可能它也会影响Dagger2:http://*.com/questions/31773884/verifyerror-in-multidex-app-when-injecting-dependency-with-匕首 –