AndroidX — это набор библиотек Jetpack от Google, который заменил устаревшую Support Library. По данным Google Developer Documentation, 2024, AndroidX предоставляет обратно совместимые компоненты для всех версий Android и является стандартом современной Android-разработки. Библиотеки AndroidX включают инструменты для UI, навигации, работы с данными, камерой и фоновыми задачами.
Главное
AndroidX — это библиотека с открытым исходным кодом, которая входит в состав Android Jetpack. Google выпустила AndroidX в 2018 году как замену Support Library, которая с 2011 года поставляла обратно совместимые компоненты для старых версий Android.
До появления AndroidX каждый компонент Support Library имел свою версию, привязанную к targetSdkVersion. Разработчикам приходилось одновременно подключать несколько версий одной и той же библиотеки, что приводило к конфликтам зависимостей и росту размера APK-файла.
AndroidX решил эту проблему за счёт семантического версионирования (SemVer). Теперь каждая библиотека — это отдельный Gradle-артефакт с версией в формате MAJOR.MINOR.PATCH. Разработчик может обновлять Room с 2.4.0 до 2.6.0, не трогая Activity, Fragment или другие модули.
Первый стабильный релиз AndroidX 1.0.0 состоялся в декабре 2018 года вместе с Android 9 Pie. Google объявила, что Support Library переходит в режим поддержки и все новые компоненты — Navigation, WorkManager, Compose — будут выходить только в составе AndroidX. Последняя версия Support Library — 28.0.0 — вышла в 2019 году.
По данным Google I/O 2019, ключевой причиной перехода стала необходимость ускорить выпуск обновлений. В старой модели одна библиотека ждала другую из-за единой версии пакета. AndroidX устранил эту блокировку, и Jetpack начал получать мажорные и минорные релизы каждые 2–3 месяца.
Основное отличие — пространство имён. Support Library использовала пакет android.support.*, а AndroidX перешёл на androidx.*. Это изменение позволило разделить библиотеки по функциональным модулям. Например, Fragment из Support Library назывался android.support.v4.app.Fragment, а в AndroidX — androidx.fragment.app.Fragment.
Второе важное отличие — архитектура. AndroidX поставляется вместе с Jetpack — набором рекомендаций по архитектуре приложений. Jetpack включает ViewModel, LiveData, Room, Navigation и WorkManager, которые разрабатывались как единая экосистема, а не как разрозненные утилиты.
Обратная совместимость также улучшилась. Если Support Library поддерживала Android 2.3+, то AndroidX гарантирует работу на устройствах с Android 4.0 (API 14) и выше — это охватывает более 99% активных устройств по данным Google Play Console 2024.
AndroidX включает более 100 библиотек, разделённых на группы. Каждая группа отвечает за определённую область: UI, данные, навигацию, фоновые задачи, мультимедиа и тестирование. Ниже приведён обзор ключевых модулей.
androidx.core:core — базовая библиотека, которая содержит обратно совместимые версии системных API: NotificationCompat, ActivityCompat, ContextCompat. Модуль core-ktx предоставляет Kotlin-расширения для работы с файлами, SharedPreferences и view-элементами.
Библиотека androidx.activity:activity ввела Activity Result API (registerForActivityResult), который заменил устаревший startActivityForResult. Модуль fragment:fragment управляет жизненным циклом фрагментов и поддерживает FragmentManager для транзакций и бэкстека.
androidx.lifecycle — основа архитектуры Jetpack. LifecycleOwner и LifecycleObserver позволяют компонентам реагировать на изменения жизненного цикла Activity или Fragment. ViewModel сохраняет данные при повороте экрана, а LiveData уведомляет UI об изменениях в данных.
class MainViewModel : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
val result = repository.getUsers()
_users.value = result
}
}
}
androidx.recyclerview:recyclerview — мощный компонент для отображения списков и сеток. RecyclerView поддерживает LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration и анимации через ItemAnimator. Библиотека ListAdapter с AsyncListDiffer упрощает обновление списка с автоматическим расчётом diff.
androidx.navigation:navigation — библиотека для навигации между экранами. Navigation Component работает с NavHostFragment и NavController, поддерживает Safe Args для передачи типизированных параметров и Deep Links для внешних ссылок. NavGraph описывает все маршруты в XML-файле.
androidx.compose.ui — декларативный UI-фреймворк Jetpack Compose, построенный на Kotlin. В отличие от View-системы, Compose перерисовывает только изменившиеся элементы через recomposition. Material Design 3 компоненты (Button, TextField, Scaffold) доступны в модуле material3.
| Библиотека | Артефакт | Назначение |
|---|---|---|
| Fragment | androidx.fragment | Управление фрагментами и транзакциями |
| RecyclerView | androidx.recyclerview | Списки и сетки с оптимизацией |
| Navigation | androidx.navigation | Навигация между экранами |
| Compose UI | androidx.compose.ui | Декларативный UI на Kotlin |
androidx.room:room — ORM для локального хранения данных. Room генерирует DAO-классы из аннотированных запросов SQLite, проверяет SQL-синтаксис на этапе компиляции и поддерживает RxJava и Kotlin Flow. Версия 2.6 включает поддержку KSP для более быстрой генерации кода.
androidx.work:workmanager — библиотека для фоновых задач с гарантированным выполнением. WorkManager поддерживает периодические задачи, цепочки работ (beginWith, then) и критерии запуска (Constraints: сеть, зарядка, память). Даже если приложение закрыто, WorkManager доставляет задачу после перезагрузки устройства.
androidx.datastore:datastore — современная замена SharedPreferences. DataStore использует Kotlin Coroutines и Flow, работает синхронно и асинхронно, исключая блокировку UI-потока. Preferences DataStore хранит простые пары ключ-значение, а Proto DataStore — типизированные объекты через Protocol Buffers.
Автоматическая миграция — это рекомендуемый Google способ перехода с Support Library на AndroidX. Android Studio начиная с версии 3.2 включает встроенный инструмент Refactor Migrate to AndroidX, который заменяет пространства имён и обновляет зависимости в build.gradle.
Перед миграцией необходимо обновить версию compileSdk до 28 или выше. Также стоит убедиться, что все сторонние библиотеки поддерживают AndroidX. Если какая-то зависимость ещё не мигрирована, можно использовать флаг android.enableJetifier=true в gradle.properties — он автоматически переписывает байткод сторонних библиотек.
В Android Studio выберите Refactor Migrate to AndroidX из меню. IDE просканирует весь проект, найдет все импорты из пакета android.support.* и заменит их на androidx.*. Также обновятся зависимости в app/build.gradle — Support Library артефакты заменятся на соответствующие AndroidX версии.
После миграции Gradle Sync может показать ошибки, если некоторые зависимости не были найдены. Проверьте список используемых библиотек в документации Google Maven — все артефакты AndroidX опубликованы на google(). Если библиотека недоступна, добавьте mavenCentral() в repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (устарело)
// implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.activity:activity-ktx:1.9.3'
implementation 'androidx.fragment:fragment-ktx:1.8.5'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.room:room-runtime:2.6.1'
ksp 'androidx.room:room-compiler:2.6.1'
}
Если проект слишком большой или содержит кастомные View из Support Library, автоматическая замена может быть неполной. Вручную замените все строки в коде: измените импорты, атрибуты в XML (app/src/main/res) и ссылки в манифесте. Для атрибутов Support Library префикс android: меняется на app: (например, app:cardCornerRadius вместо android:cardCornerRadius).
После ручной миграции проверьте R-ссылки. Support Library экспортировала ресурсы через android.support.v7.appcompat.R, а AndroidX — через androidx.appcompat.R. Запустите поиск по проекту и замените все упоминания старых R-путей. Сборка проекта должна проходить без ошибок и предупреждений deprecation.
Первое преимущество AndroidX — модульность. Вы подключаете только те библиотеки, которые реально используете. Если приложению нужен только RecyclerView и Navigation, нет необходимости тянуть весь Support Library со всеми View-компонентами. Это сокращает размер APK и ускоряет сборку проект.
Второе преимущество — регулярные обновления. Jetpack выпускает стабильные релизы каждые 1–3 месяца. Room 2.6.0, вышедший в 2024 году, добавил поддержку KSP и Kotlin 2.0. Navigation 2.8.0 ввёл типобезопасные маршруты на основе сериализации Kotlinx Serialization. Разработчики получают новые возможности без ожидания очередной версии Android.
Третье преимущество — интеграция с Kotlin. Все библиотеки AndroidX имеют модули -ktx с extension-функциями. viewLifecycleOwner.lifecycleScope запускает корутины в контексте фрагмента, collectLatest обрабатывает Flow, а SharedFlow и StateFlow полностью совместимы с Lifecycle-aware компонентами. Это делает код лаконичнее и безопаснее.
Обратная совместимость — ключевое преимущество AndroidX перед новыми API платформы. Вы можете использовать AppCompatDelegate.setDefaultNightMode для тёмной темы на Android 4.0+, NotificationCompat.setBubble для баблов на Android 5.0+ и LocationRequestCompat для fused location на Android 4.0+. Охват устройств достигает 99% без увеличения минимальной версии SDK.
Четвёртое преимущество — тестирование. AndroidX включает библиотеку androidx.test для написания инструментальных и модульных тестов. FragmentScenario и ActivityScenario позволяют тестировать UI-компоненты в изоляции, а TestNavHostController — проверять навигацию без запуска реального устройства. MockK и Robolectric дополняют экосистему.
Часто задаваемые вопросы
AndroidX использует пространство имён androidx.* вместо android.support.*, имеет независимое версионирование (SemVer), включает библиотеки Jetpack и поддерживает Kotlin-расширения -ktx. Support Library была заморожена на версии 28.0.0 в 2019 году.
В Android Studio включите флаг Use AndroidX в шаге создания проекта. Для существующего проекта добавьте android.useAndroidX=true и android.enableJetifier=true в gradle.properties. Затем замените зависимости в build.gradle на артефакты из группы androidx.
Google Play требует, чтобы все приложения и обновления использовали AndroidX. Поддержка Support Library прекращена, и она не получает исправлений безопасности. Если ваше приложение ещё не мигрировало, это может привести к отклонению обновления в Google Play Console.
Jetpack — это набор библиотек, инструментов и рекомендаций от Google для разработки Android-приложений. AndroidX является основой Jetpack. В состав Jetpack входят Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) и Behavior (WorkManager, Navigation, CameraX).
Да, Jetpack Compose сам является частью AndroidX (androidx.compose.ui). Библиотеки ViewModel, Navigation, Room и WorkManager полностью совместимы с Compose. Функции collectAsState() и collectAsStateWithLifecycle() обеспечивают интеграцию Flow с Compose-функциями.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.