Недавно я обновляю 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
? Как решить мою проблему?