AndroidX переносит зависимость / библиотеки
Я успешно перенес свой проект в AndroidX. Приложение работает отлично, но я получаю ошибки во время компиляции, потому что мои зависимости используют пакет поддержки.
Причина этой ошибки
Так как PhotoView
класс зависимостей, который использует android.support.v7.widget.AppCompatImageView
который больше не доступен в моем проекте. Потому что сейчас androidx.appcompat.widget.AppCompatImageView
Проект еще запущен?
Да, android.enableJetifier
преобразовать эту зависимость в AndroidX
во время выполнения, но я хочу избавиться от ошибок во время компиляции.
Есть ли быстрое решение сейчас?
3 ответа
Я решил эту проблему, удалив .idea
папка и синхронизация проекта снова.
Кажется, это ошибка IDE, а не Jetifier, она не синхронизирует зависимости после миграции. Jetifier делает свою работу хорошо. Он преобразует все библиотеки поддержки зависимостей в androidx во время сборки. Смотрите @ этот пост для хорошего объяснения.
Если вы зависите от библиотеки, которая ссылается на более старую библиотеку поддержки, Android Studio обновит эту библиотеку для ссылки на androidx вместо этого посредством преобразования зависимостей. Преобразование зависимостей автоматически применяется плагином Android Gradle 3.2.0-alpha14, который переписывает байт-код и ресурсы зависимостей JAR и AAR (и транзитивных зависимостей) для ссылки на новые классы и артефакты, упакованные в androidx. Мы также предоставим автономный инструмент перевода в виде JAR.
Я вижу (используя./gradlew app:dependencies), что проектная зависимость rxbinding обновлена до новой зависимости com.google.android.material. Передача com.google.android.material.snackbar.Snackbar в библиотечную функцию, которая ссылается на android.support.design.widget.Snackbar, заставляет Android Studio отображать ошибку компилятора, но на самом деле компиляция и запуск приложения работают. Я предполагаю, что AS пока не может справиться с этими изменениями.
Кажется, есть некоторые проблемы с кэшированием, удаление .idea/libraries
и выполнение синхронизации Gradle заставляет ошибки исчезать.
Моим исправлением для этого было преобразование библиотеки с ошибкой времени компиляции в AndroidX и отправка запроса на извлечение в библиотеку.