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



Книга Ошибка дублированного класса в 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. Так вы наверняка очень быстро придете к решению.



205   0  
    Ничего не найдено.

Добавить ответ:
Отменить.