Двойные классы от 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
и пересмотрели ваш проект. удачи :)