Проверка версий, миграция на AndroidX и обновление зависимостей

Android Support Library устарела — используйте AndroidX. Чтобы проверить версии, смотрите build.gradle и/или выполните ./gradlew :app:dependencies; для миграции включите android.useAndroidX и android.enableJetifier, выполните Refactor → Migrate to AndroidX, обновите compileSdk/targetSdk и сторонние библиотеки; для обновления зависимостей используйте плагин dependency updates или CI-ботов (Dependabot/ Renovate).

Ключевые отличия и почему это важно

  • Неймспейсы: android.support.* → androidx.* (например, android.support.v7.app.AppCompatActivity → androidx.appcompat.app.AppCompatActivity).
  • Поддержка: Support Library заморожена (посл. версия 28.0.0). AndroidX получает регулярные релизы, патчи и интеграцию с Jetpack и Material 3.
  • Совместимость: AndroidX избавляет от дубликатов и конфликтов в пакетах, уменьшает размер и упрощает работу с современными API (корутины, Flow, Compose).
  • Версии: AndroidX использует семантическое версионирование (major.minor.patch). Обычно обновления минорные или патчевые безопасны, major — могут быть breaking.

Если проект на Kotlin — миграция на AndroidX часто даёт лучшую совместимость с корутинами, Flow и KTX-расширениями.

Как проверить версии в проекте

  1. Быстрая проверка в коде: откройте module-level build.gradle(.kts) и просмотрите dependencies. Примеры:
// Support
implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.appcompat:appcompat:1.7.0'
  1. Дерево зависимостей в Gradle:
./gradlew :app:dependencies --configuration implementation

Вы увидите, какие артефакты подключены и их версии, включая транзитивные зависимости.
3. Поиск в проекте:

grep -R "android.support" -n .
grep -R "androidx" -n .
  1. В Android Studio: Tools → AGP Upgrade Assistant и Analyze → Inspect Code покажут смешанные неймспейсы и потенциальные проблемы.

Пошаговая миграция и как обновлять зависимости

  1. Подготовка:
    • Обновите Android Studio до 4.2+ (лучше — последнюю стабильную).
    • Установите актуальную версию Gradle/AGP, совместимую с targetSdk.
  2. Включите AndroidX и Jetifier в gradle.properties:
android.useAndroidX=true
android.enableJetifier=true

Jetifier автоматически преобразует зависимости третьих сторон, которые ещё используют support-библиотеки. 3. Повысите compileSdk и targetSdk (рекомендуется минимум 31+ для современных AndroidX-версий). 4. Автоматическая миграция: Refactor → Migrate to AndroidX в Android Studio — она выполнит массовую замену импортов и настроек. 5. Сборка и исправления:

  • Build → Clean Project, затем Rebuild или ./gradlew clean assembleDebug.
  • Исправьте оставшиеся android.support.* вручную (редко) и обновите устаревшие API (например, замените старые адаптеры RecyclerView на ListAdapter при необходимости).
  1. Обновите сторонние библиотеки до AndroidX-совместимых версий (OkHttp, Retrofit, 3rd‑party UI libs и т.д.). Если библиотека не обновлялась — замените её аналогом.
  2. Отключите Jetifier после полной миграции (убирает оверхед сборки):
android.enableJetifier=false
  1. Обновление зависимостей в будущем:
    • Локально: плагин com.github.ben-manes.versions (./gradlew dependencyUpdates) покажет устаревшие пакеты.
    • В CI: используйте Renovate / Dependabot для автоматических PR с обновлениями.
    • Внимательно тестируйте после обновлений: интеграционные тесты, Espresso, unit-тесты и smoke-тест на устройстве/эмуляторе.

Не отключайте Jetifier до проверки, что все зависимости и модули полностью перешли на AndroidX — иначе сборка и рантайм могут упасть.

Частые ошибки

  • Смешанные неймспейсы (android.support + androidx) приводят к конфликтам классов — проверяйте grep'ом и AGP Assistant.
  • Заброшенные сторонние библиотеки — проверьте репозиторий/maven‑артефакт или замените зависимость.
  • Нехватка compileSdk: многие AndroidX‑фичи требуют высокого compileSdk (проверяйте release notes).
  • После апдейта библиотек — регрессии в RecyclerView, ViewBinding/Parcelable; тестируйте UI.

FAQ

  • Нужно ли мигрировать сейчас?
    Да — Support Library больше не поддерживается; AndroidX получает фиксы и интеграции с Jetpack/Compose.
  • Что если проект многомодульный?
    Мигрируйте root/библиотеки поэтапно, сначала общие модули, затем приложения; используйте платформу BOM для выравнивания версий.
  • Как быстро откатиться при краше после обновления?
    В Git откатите version changes в build.gradle и/или используйте предыдущую версию артефакта (например, appcompat 1.6.1), прогоните тесты и CI.

Вперед: включите android.useAndroidX, выполните Refactor → Migrate to AndroidX, обновите зависимости и заведите автоматические обновления — ваш проект станет стабильнее и проще в поддержке.