Проверка версий, миграция на 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-расширениями.
Как проверить версии в проекте
- Быстрая проверка в коде: откройте module-level build.gradle(.kts) и просмотрите dependencies. Примеры:
// Support
implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.appcompat:appcompat:1.7.0'
- Дерево зависимостей в Gradle:
./gradlew :app:dependencies --configuration implementation
Вы увидите, какие артефакты подключены и их версии, включая транзитивные зависимости.
3. Поиск в проекте:
grep -R "android.support" -n .
grep -R "androidx" -n .
- В Android Studio: Tools → AGP Upgrade Assistant и Analyze → Inspect Code покажут смешанные неймспейсы и потенциальные проблемы.
Пошаговая миграция и как обновлять зависимости
- Подготовка:
- Обновите Android Studio до 4.2+ (лучше — последнюю стабильную).
- Установите актуальную версию Gradle/AGP, совместимую с targetSdk.
- Включите 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 при необходимости).
- Обновите сторонние библиотеки до AndroidX-совместимых версий (OkHttp, Retrofit, 3rd‑party UI libs и т.д.). Если библиотека не обновлялась — замените её аналогом.
- Отключите Jetifier после полной миграции (убирает оверхед сборки):
android.enableJetifier=false
- Обновление зависимостей в будущем:
- Локально: плагин 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, обновите зависимости и заведите автоматические обновления — ваш проект станет стабильнее и проще в поддержке.