Не удается найти ссылочный метод 'java.lang.Object injectMembers (dagger.MembersInjector, java.lang.Object) - PullRequest
0 голосов
/ 05 ноября 2018

Недавно я обновляю 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 является законным предупреждением, о котором я должен позаботиться.

Я ищу и обнаружил, что проблема сообщается в https://github.com/google/dagger/pull/950#issuecomment-353223029

Решение от @ronshapiro:

Вы должны закрасить dagger.internal из одной (или обеих) библиотек. Старый, наверное, самый простой

Что означает shade the dagger.internal? Как решить мою проблему?

...