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 и елементима приказа.
Библиотека 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-ом поједностављује ажурирање листе са аутоматским израчунавањем разлика.
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 путања. Компилација пројекта мора проћи без грешака и упозорења о застарелости.
Прва предност 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 модуле са екстензионим функцијама. 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође