Двойные классы от androidx и com.android.support

Я недавно обновил свою 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 все еще используются библиотеки, даже при удалении библиотек (они просто переделал как только попробую снова скомпилировать).

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

Ответы

Ответ 1

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

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

android.useAndroidX=true
android.enableJetifier=true

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

./gradlew :yourApp:dependencies

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

Ответ 2

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

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

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

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

Ответ 3

Это решение отсюда сработало лучше для меня. Миграция на androidX

https://developer.android.com/jetpack/androidx/migrate

С Android Studio 3.2 и выше вы можете перенести существующий проецировать в AndroidX, выбрав Refactor> Migrate to AndroidX из строка меню.

Команда refactor использует два флага. По умолчанию оба установлены в значение true в файле gradle.properties:

android.useAndroidX=true Плагин Android использует соответствующие Библиотека AndroidX вместо библиотеки поддержки. android.enableJetifier = true Плагин Android автоматически переносится существующие сторонние библиотеки для использования AndroidX, переписав их двоичные файлы.

Ответ 4

перейдите в Gradle Scrpits-> gradle.properties а затем вставьте этот код:

- android.useAndroidX=true
- android.enableJetifier=true

и пересмотрели ваш проект. удачи :)