最近我将Dagger 2.13升级到2.19,在此警告的Proguard阶段出现以下编译错误。
Warning: com.mypackage.MyClass_Factory: can't find referenced method 'java.lang.Object injectMembers(dagger.MembersInjector,java.lang.Object)' in program class dagger.internal.MembersInjectors
这也从Dagger 2.14.1开始发生。这仅发生在我所包含的库中的MyClass
上。
如果我使用
-dontwarn com.mypackage.MyClass_Factory
然后它将在运行时崩溃
java.lang.NoSuchMethodError: No static method injectMembers(Ldagger/MembersInjector;Ljava/lang/Object;)Ljava/lang/Object; in class Ldagger/internal/MembersInjectors; or its super classes (declaration of 'dagger.internal.MembersInjectors' appears in MyClass
这意味着Proguard发出的警告是合法警告,我应该注意
我搜索后发现问题{@ {3}}
@ronshapiro的解决方案是
您应该从一个(或两个)库中遮盖dagger.internal
。旧的可能是最简单的
shade the dagger.internal
是什么意思?如何解决我的问题?