java - 在 Android 上使用 Dagger2 在某些设备上遇到 VerifyError

标签 java android dagger-2 verifyerror

我有一个使用 Dagger2 的 Android 应用程序。我有一个名为 AppComponent 的 Dagger 组件,一个名为 MainActivity 的 Activity。 MainActivity 有一个注入(inject)字段:@Inject MainDataModel mModel,并使用 DaggerAppComponent.inject(mainActivity) 来满足该字段。我将组件初始化代码放在 Application.onCreate() 中。在运行时,我在组件初始化期间遇到了 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,它也是由Dagger 生成的。

导致此问题的行是 this.mainActivityMembersInjector = MainActivity_MembersInjector_MembersInjector.create(MembersInjectors.noOp(), this.mainDataModelProvider);DaggerAppComponent 类中。

需要注意的是,它只发生在某些设备上,例如小米 2014011。知道如何解决这个问题吗?

最佳答案

您的 build.gradle 配置中是否启用了 multiDex

关于java - 在 Android 上使用 Dagger2 在某些设备上遇到 VerifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35694480/

相关文章:

dagger-2 - Dagger 2 扩展接口(interface)与依赖组件

android - 如何正确地为单个 Activity App 注入(inject) fragment

java - 使用键复合键进行高效的 HashMap 检索(由 2 个枚举构建)

java - 递归词trie遍历

java - 如何解决中缀表示法而不将其转换为任何其他表示法?

java - 使用 postgres 的 GlassFish JDBC 身份验证。无法登录应用程序

java - Android 检查日期更改

java - 检测霍夫圆android

java - 传入 BroadcastReceiver 的 onReceive() 的 Context 是什么?

android - AppCompatActivity 与 DaggerActivity