Это продолжение моего вопроса о Play Services Cast Framework , где решение, по-видимому, обновляется с v17.0.0 до v18.0.0. К сожалению, новая версия зависит от Dagger 2, в то время как (большой и сложный) проект - Dagger 1.
В настоящее время мы используем:
api "com.google.android.gms:play-services-cast:17.0.0"
api "com.google.android.gms:play-services-cast-framework:17.0.0"
Обновление результатов до 18.0.0 в:
> 1 exception was raised by workers:
java.lang.RuntimeException: Duplicate class dagger.Lazy found in modules dagger-1.2.2.jar (com.squareup.dagger:dagger:1.2.2) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.MembersInjector found in modules dagger-1.2.2.jar (com.squareup.dagger:dagger:1.2.2) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.Module found in modules dagger-1.2.2.jar (com.squareup.dagger:dagger:1.2.2) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.Provides found in modules dagger-1.2.2.jar (com.squareup.dagger:dagger:1.2.2) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
В идеале я бы позволил новой версии библиотеки использовать Dagger 2, в то время как остальная часть приложения использует Dagger 1. Переработка проекта для использования Dagger 2 занимает несколько недель начинание.
Есть идеи?
Что я уже пробовал:
Исключение Dagger 2 из каркаса заклинаний через:
api("com.google.android.gms:play-services-cast:18.0.0") {
exclude group:'com.google.dagger', module:'dagger'
}
api("com.google.android.gms:play-services-cast-framework:18.0.0") {
exclude group:'com.google.dagger', module:'dagger'
}
неудивительно, что это привело к:
java.lang.NoClassDefFoundError: Failed resolution of: Ldagger/internal/Preconditions;
at com.google.android.datatransport.runtime.DaggerTransportRuntimeComponent$Builder.setApplicationContext(com.google.android.datatransport:transport-runtime@@2.1.0:150)
Принуждение платформы приведения к использованию более старой версии с помощью следующего также привело к дублированию классов:
configurations.all {
resolutionStrategy {
preferProjectModules()
dependencySubstitution {
substitute(module("com.google.dagger:dagger:2.22")).with(module("com.squareup.dagger:dagger:1.2.2"))
}
}
}
Потенциально связанные вопросы это не помогло: