Двойные классы от androidx и com.android.support - PullRequest
21 голосов
/ 19 апреля 2019

Я недавно обновил свою Android Studio (и я уверен, что версия Gradle), и теперь я получаю кучу ошибок при попытке скомпилировать мой проект. Вот что меня мучает в данный момент:

Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:26.1.0)

Далее следует множество похожих.

Я пытался удалить все варианты использования com.android.support в пользу androidx (см. здесь о том, что я использовал для замены), но библиотеки com.android.support все еще используются, даже когда я удаляю библиотеки (они просто переделываются, когда я пытаюсь снова скомпилировать).

Вот ссылка на полную ошибку, которую я получаю.

Ответы [ 2 ]

47 голосов
/ 19 апреля 2019

Я надеюсь, что у вас есть gradle.properties эти две строки:

(Если у вас нет gradle.properties, просто создайте его в корневом каталоге вашего проекта)

android.useAndroidX=true
android.enableJetifier=true

Похоже, у вас есть какие-то support реликвии где-нибудь в ваших зависимостях, может быть, они образуют библиотеку? Чтобы исследовать и увидеть дерево зависимостей, пожалуйста, запустите

./gradlew :yourApp:dependencies

и тогда вы видите, откуда оно приходит.

4 голосов
/ 19 апреля 2019

В вашем приложении build.gradle вы используете сочетание старой библиотеки поддержки и новых артефактов библиотеки поддержки.Удалите один из них из build.gradle, чтобы решить эту проблему.

Старый артефакт: com.android.support:support-compat

Соответствующий новый артефакт: androidx.core:core:1.0.0

См. этостраница для получения дополнительной информации о миграции на AndroidX .

...