Откуда Gradle берет зависимости, из-за которых возникает конфликт версий?

Рейтинг: 1Ответов: 1Опубликовано: 04.05.2023

Во время сборки Gradle получаю вот такой вот лог

Duplicate class androidx.activity.ComponentActivity found in modules androidx.activity.activity-1.0.0-runtime.jar (:androidx.activity.activity-1.0.0:) and androidx.activity.activity-1.0.0-runtime.jar (androidx.activity:activity:1.0.0)

Имя как будто одинаковое

И еще много, с разными именами сборок, например

Duplicate class androidx.annotation.AnimRes found in modules androidx.annotation.annotation-1.5.0.jar (androidx.annotation.annotation-1.5.0.jar) and annotation-1.1.0.jar (androidx.annotation:annotation:1.1.0)

Посмотрел зависимости в андроид студии, увидел такую картину

annotation

Выглядит так, будто конфликт между аннотацией 1.1.0 из appCompat и между 1.0.0 непонятно откуда. Но если посмотреть налево, то явно видно что у меня нет никакой аннотации версии 1.0.0, совершенно непонятно откуда оно его берет. Да и лог выше говорит о конфликте между 1.1.0 и 1.5.0, ни о каком 1.0.0 речи не идет. Почему механизм поиска зависимостей показывает что-то непонятное? Как мне найти нормальные зависимости?

Ответы

▲ 0

Чтобы посмотреть полное дерево зависимостей вашего проекта и проанализировать, откуда какая зависимость берется, выполните следующую команду из корня вашего проекта:

./gradlew app:dependencies

Вместо app подставьте имя вашего модуля, если он другой.

Кроме этого, если вы хотите построить дерево всех зависимостей вашего билд-скрипта, то используйте эту команду:

./gradlew buildEnvironment

Об этих командах подробнее есть в гайдах Gradle.