Ошибка дублированного класса в Android для Kotlin

Факторов появления рассматриваемой ошибки может быть много. Расскажу о сценарии, в котором ошибка получена, а в конце  —  об основной причине ее возникновения. Проведенная мной диагностика наверняка пригодится вам в поиске решения.

Цель моего сценария  —  импортировать библиотеки для Google Calendar Api в файле build.gradle(:app). После импорта проект не скомпилировался, появилась необычная ошибка Duplicate Class Found:

Вот одно из ее описаний: «В модулях jetified-guava-27.1-android (com.google.guava:guava:27.1-android) и jetified-guava-jdk5–17.0 (com.google.guava:guava-jdk5:17.0) найден дублированный класс com.google.common.xml.XmlEscapers».

То есть имеем проблему с guava и конфликт. 
Эта ошибка получается, даже если не импортировать в файле ничего, связанного с guava.

Этапы решения

В файл build.gradle(:app) добавляем конфигурации:

configurations{
implementation.exclude module:'gauva-jdk5'
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

В зависимостях  —  библиотеках, связанных с API календаря,  —  игнорируем guava. Об этом указано в комментариях:

Вот версии приложения этого сценария:
minSdkVersion = 23 , targetSdkVersion = 32 , compileSdkVersion = 32.

Процессов выше для устранения ошибки хватило. Если их недостаточно, к уровню приложения можно добавить этот импорт:

implementation 'com.google.guava:guava:26.0-android'

Теперь важный момент. Ресурсов для устранения проблемы было не так много, предлагаемые решения найдены методом проб и ошибок.

Например, одна из рекомендаций  —  найти проблемную библиотеку, создавая новый проект, импортируя в него все библиотеки по порядку и экспериментируя. Для крупных проектов оцениваются затраты времени и сил.

Судя по отзывам в интернете людей, которые сталкивались с этой ошибкой, она встречается в библиотеках для google-api. Я сократил количество импортов, в которых игнорировалась бы guava, и за короткое время устранил проблему. Но эта не доказанная теория, а лишь предположение, верное в моем случае.

Важный вывод: среди библиотек для google-api игнорировать guava. Так вы наверняка очень быстро придете к решению.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Enes Koçer: Duplicate Class Found Error In Android For Kotlin

Предыдущая статьяNext.js и React.js: что выбрать для проекта
Следующая статьяCHRONOS: современный мониторинг работоспособности приложений