AndroidX переносит зависимость / библиотеки

Я успешно перенес свой проект в AndroidX. Приложение работает отлично, но я получаю ошибки во время компиляции, потому что мои зависимости используют пакет поддержки.

image1

image2

Причина этой ошибки

Так как 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 и отправка запроса на извлечение в библиотеку.

Другие вопросы по тегам