Основная причина заключается в том, что 2 библиотеки используют одинаковые зависимости.
Это часто происходит, когда в библиотеку встроена другая библиотека (например, fat jar ), но вы также объявляете ее как зависимость (то есть через слово compile
)
В вашем случае у вас есть 2 (или более) библиотеки, использующие com.google.common.base.FinalizableReferencequeue
, которые после короткого поиска в Google соответствуют Guava и являются одной из ваших зависимостей.
Простым решением было бы удалить строку compile 'com.google.guava:guava:19.0'
.
Но если вы хотите знать, как решить вашу проблему, вы можете запустить задачу зависимостей для своего приложения. Здесь app
относится к названию модуля в рамках проекта.
// run gradlew which is on your root project.
// linux / osx
./gradlew app:dependencies
// windows
gradlew app:dependencies
Это напечатает всю конфигурацию и ее зависимости. Чтобы сузить, вы можете сосредоточиться только на одной сборке, добавив, например, --configuration debugCompileClasspath
или со вкусом с именем myFlavor --configuration myFlavorDebugCompileClasspath
(с учетом регистра).
Теперь вы сможете увидеть, какие другие библиотеки используют гуаву, и исключить ее, например:
compile(<dependency_path>) { //works also with project(<proj_name>)
exclude group: "com.google.guava", module: "guava"
}
(подробнее о исключить )