Can't find referenced method 'java.lang.Object injectMembers(dagger.MembersInjector,java.lang.Object)

Viewed 826

Recently I upgrade Dagger 2.13 to 2.19, I have the below compile error at Proguard stage of this warning.

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

This also happens from Dagger 2.14.1 onwards. This happens only to MyClass which is in a library I include.

If I use

-dontwarn com.mypackage.MyClass_Factory

Then it will crash on runtime

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

Which means the warning from Proguard is a legit warning I should take care.

I search and found the issue is reported in https://github.com/google/dagger/pull/950#issuecomment-353223029

The solution by @ronshapiro is

You should shade the dagger.internal from one (or both) of the libraries. The old one is probably easiest

What does shade the dagger.internal means? How to solve my problem?

0 Answers
Related