AndroidX je sada knihoven Jetpack od Google, která nahradila zastaralou Support Library. Podle Google Developer Documentation, 2024 poskytuje AndroidX zpětně kompatibilní komponenty pro všechny verze Androidu a je standardem moderního vývoje pro Android. Knihovny AndroidX zahrnují nástroje pro UI, navigaci, práci s daty, kamerou a úlohy na pozadí.
Hlavní body
AndroidX je open source knihovna, která je součástí Android Jetpack. Google vydal AndroidX v roce 2018 jako náhradu za Support Library, která od roku 2011 poskytovala zpětně kompatibilní komponenty pro staré verze Androidu.
Před příchodem AndroidX měla každá komponenta Support Library svou vlastní verzi vázanou na targetSdkVersion. Vývojáři museli současně připojovat několik verzí stejné knihovny, což vedlo ke konfliktům závislostí a nárůstu velikosti APK souboru.
AndroidX vyřešil tento problém pomocí sémantického verzování (SemVer). Nyní je každá knihovna samostatný Gradle artefakt s verzí ve formátu MAJOR.MINOR.PATCH. Vývojář může aktualizovat Room z 2.4.0 na 2.6.0, aniž by se dotkl Activity, Fragment nebo jiných modulů.
První stabilní vydání AndroidX 1.0.0 proběhlo v prosinci 2018 společně s Android 9 Pie. Google oznámil, že Support Library přechází do režimu údržby a všechny nové komponenty — Navigation, WorkManager, Compose — budou vydávány pouze v rámci AndroidX. Poslední verze Support Library — 28.0.0 — vyšla v roce 2019.
Podle Google I/O 2019 byl klíčovým důvodem přechodu potřeba urychlit vydávání aktualizací. Ve starém modelu jedna knihovna čekala na druhou kvůli jednotné verzi balíčku. AndroidX toto blokování odstranil a Jetpack začal dostávat hlavní a vedlejší vydání každé 2–3 měsíce.
Hlavním rozdílem je prostor názvů. Support Library používala balíček android.support.*, zatímco AndroidX přešel na androidx.*. Tato změna umožnila rozdělení knihoven do funkčních modulů. Například Fragment z Support Library se jmenoval android.support.v4.app.Fragment, v AndroidX — androidx.fragment.app.Fragment.
Druhým důležitým rozdílem je architektura. AndroidX je dodáván společně s Jetpack — sadou doporučení pro architekturu aplikací. Jetpack zahrnuje ViewModel, LiveData, Room, Navigation a WorkManager, které byly navrženy jako jednotný ekosystém, nikoliv jako roztříštěné nástroje.
Zpětná kompatibilita se také zlepšila. Zatímco Support Library podporovala Android 2.3+, AndroidX garantuje fungování na zařízeních s Android 4.0 (API 14) a vyšším — to pokrývá více než 99 % aktivních zařízení podle Google Play Console 2024.
AndroidX zahrnuje více než 100 knihoven rozdělených do skupin. Každá skupina odpovídá za určitou oblast: UI, data, navigaci, úlohy na pozadí, multimédia a testování. Níže je uveden přehled klíčových modulů.
androidx.core:core — základní knihovna obsahující zpětně kompatibilní verze systémových API: NotificationCompat, ActivityCompat, ContextCompat. Modul core-ktx poskytuje Kotlin rozšíření pro práci se soubory, SharedPreferences a prvky zobrazení.
Knihovna androidx.activity:activity zavedla Activity Result API (registerForActivityResult), který nahradil zastaralý startActivityForResult. Modul fragment:fragment spravuje životní cyklus fragmentů a podporuje FragmentManager pro transakce a zásobník zpět.
androidx.lifecycle — základ architektury Jetpack. LifecycleOwner a LifecycleObserver umožňují komponentám reagovat na změny životního cyklu Activity nebo Fragment. ViewModel uchovává data při otáčení obrazovky a LiveData informuje UI o změnách dat.
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 — výkonná komponenta pro zobrazení seznamů a mřížek. RecyclerView podporuje LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration a animace přes ItemAnimator. Knihovna ListAdapter s AsyncListDiffer zjednodušuje aktualizaci seznamu s automatickým výpočtem rozdílů.
androidx.navigation:navigation — knihovna pro navigaci mezi obrazovkami. Navigation Component pracuje s NavHostFragment a NavController, podporuje Safe Args pro předávání typových parametrů a Deep Links pro externí odkazy. NavGraph popisuje všechny trasy v XML souboru.
androidx.compose.ui — deklarativní UI framework Jetpack Compose, postavený na Kotlin. Na rozdíl od systému View, Compose překresluje pouze změněné prvky pomocí recomposition. Komponenty Material Design 3 (Button, TextField, Scaffold) jsou k dispozici v modulu material3.
| Knihovna | Artefakt | Účel |
|---|---|---|
| Fragment | androidx.fragment | Správa fragmentů a transakcí |
| RecyclerView | androidx.recyclerview | Seznamy a mřížky s optimalizací |
| Navigation | androidx.navigation | Navigace mezi obrazovkami |
| Compose UI | androidx.compose.ui | Deklarativní UI na Kotlin |
androidx.room:room — ORM pro lokální ukládání dat. Room generuje DAO třídy z anotovaných SQLite dotazů, kontroluje SQL syntaxi při kompilaci a podporuje RxJava a Kotlin Flow. Verze 2.6 obsahuje podporu KSP pro rychlejší generování kódu.
androidx.work:workmanager — knihovna pro úlohy na pozadí s garantovaným provedením. WorkManager podporuje periodické úlohy, řetězce prací (beginWith, then) a kritéria spuštění (Constraints: síť, nabíjení, paměť). I když je aplikace zavřená, WorkManager doručí úlohu po restartu zařízení.
androidx.datastore:datastore — moderní náhrada za SharedPreferences. DataStore používá Kotlin Coroutines a Flow, pracuje synchronně i asynchronně a odstraňuje blokování UI vlákna. Preferences DataStore ukládá jednoduché páry klíč-hodnota, zatímco Proto DataStore — typové objekty přes Protocol Buffers.
Automatická migrace je doporučený způsob přechodu z Support Library na AndroidX od Google. Android Studio od verze 3.2 obsahuje vestavěný nástroj Refactor Migrate to AndroidX, který nahrazuje jmenné prostory a aktualizuje závislosti v build.gradle.
Před migrací je nutné aktualizovat verzi compileSdk na 28 nebo vyšší. Také se ujistěte, že všechny knihovny třetích stran podporují AndroidX. Pokud některá závislost ještě nebyla migrována, můžete použít příznak android.enableJetifier=true v gradle.properties — ten automaticky přepíše bytecode knihoven třetích stran.
V Android Studio vyberte z nabídky Refactor Migrate to AndroidX. IDE prohledá celý projekt, najde všechny importy z balíčku android.support.* a nahradí je za androidx.*. Aktualizují se také závislosti v app/build.gradle — artefakty Support Library budou nahrazeny odpovídajícími verzemi AndroidX.
Po migraci může Gradle Sync zobrazit chyby, pokud některé závislosti nebyly nalezeny. Zkontrolujte seznam používaných knihoven v dokumentaci Google Maven — všechny artefakty AndroidX jsou publikovány na google(). Pokud knihovna není k dispozici, přidejte mavenCentral() do repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (zastaralé)
// 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'
}
Pokud je projekt příliš velký nebo obsahuje vlastní View z Support Library, automatické nahrazení může být neúplné. Ručně nahraďte všechny řetězce v kódu: změňte importy, atributy v XML (app/src/main/res) a reference v manifestu. U atributů Support Library se předpona android: mění na app: (např. app:cardCornerRadius místo android:cardCornerRadius).
Po ruční migraci zkontrolujte R reference. Support Library exportovala zdroje přes android.support.v7.appcompat.R, AndroidX přes androidx.appcompat.R. Spusťte vyhledávání v projektu a nahraďte všechny zmínky starých R cest. Sestavení projektu by mělo proběhnout bez chyb a varování o zastaralosti.
První výhodou AndroidX je modularita. Připojujete pouze ty knihovny, které skutečně používáte. Pokud aplikace potřebuje jen RecyclerView a Navigation, není nutné tahat celou Support Library se všemi View komponentami. To snižuje velikost APK a urychluje sestavení projektu.
Druhou výhodou jsou pravidelné aktualizace. Jetpack vydává stabilní verze každé 1–3 měsíce. Room 2.6.0, vydaný v roce 2024, přidal podporu KSP a Kotlin 2.0. Navigation 2.8.0 zavedl typově bezpečné trasy založené na serializaci Kotlinx Serialization. Vývojáři získávají nové možnosti bez čekání na další verzi Androidu.
Třetí výhodou je integrace s Kotlin. Všechny knihovny AndroidX mají moduly -ktx s rozšiřujícími funkcemi. viewLifecycleOwner.lifecycleScope spouští korutiny v kontextu fragmentu, collectLatest zpracovává Flow a SharedFlow a StateFlow jsou plně kompatibilní s Lifecycle-aware komponentami. To dělá kód stručnějším a bezpečnějším.
Zpětná kompatibilita je klíčovou výhodou AndroidX oproti novým API platformy. Můžete použít AppCompatDelegate.setDefaultNightMode pro tmavý motiv na Android 4.0+, NotificationCompat.setBubble pro bubliny na Android 5.0+ a LocationRequestCompat pro fused location na Android 4.0+. Pokrytí zařízení dosahuje 99% bez zvyšování minimální verze SDK.
Čtvrtou výhodou je testování. AndroidX zahrnuje knihovnu androidx.test pro psaní instrumentálních a jednotkových testů. FragmentScenario a ActivityScenario umožňují testovat UI komponenty v izolaci a TestNavHostController — kontrolovat navigaci bez spouštění skutečného zařízení. MockK a Robolectric doplňují ekosystém.
Často kladené otázky
AndroidX používá prostor názvů androidx.* místo android.support.*, má nezávislé verzování (SemVer), zahrnuje knihovny Jetpack a podporuje Kotlin rozšíření -ktx. Support Library byla zmražena na verzi 28.0.0 v roce 2019.
V Android Studio zapněte příznak Use AndroidX v kroku vytváření projektu. U existujícího projektu přidejte android.useAndroidX=true a android.enableJetifier=true do gradle.properties. Poté nahraďte závislosti v build.gradle artefakty ze skupiny androidx.
Google Play vyžaduje, aby všechny aplikace a aktualizace používaly AndroidX. Podpora Support Library byla ukončena a neobdrží bezpečnostní opravy. Pokud vaše aplikace ještě nebyla migrována, může to vést k odmítnutí aktualizace v Google Play Console.
Jetpack je sada knihoven, nástrojů a doporučení od Google pro vývoj Android aplikací. AndroidX je základem Jetpack. Jetpack zahrnuje Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) a Behavior (WorkManager, Navigation, CameraX).
Ano, Jetpack Compose sám je součástí AndroidX (androidx.compose.ui). Knihovny ViewModel, Navigation, Room a WorkManager jsou plně kompatibilní s Compose. Funkce collectAsState() a collectAsStateWithLifecycle() zajišťují integraci Flow s funkcemi Compose.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také