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. Матеріал 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 {
// Підтримувана бібліотека (застаріло)
// 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.