AndroidX to zestaw bibliotek Jetpack od Google, który zastąpił przestarzałą Support Library. Według Google Developer Documentation, 2024, AndroidX zapewnia wstecznie kompatybilne komponenty dla wszystkich wersji Androida i jest standardem nowoczesnego tworzenia aplikacji na Androida. Biblioteki AndroidX obejmują narzędzia do UI, nawigacji, pracy z danymi, kamerą i zadaniami w tle.
Najważniejsze
AndroidX to biblioteka open source, która jest częścią Android Jetpack. Google wydało AndroidX w 2018 roku jako zamiennik Support Library, która od 2011 roku dostarczała wstecznie kompatybilne komponenty dla starych wersji Androida.
Przed pojawieniem się AndroidX każdy komponent Support Library miał własną wersję powiązaną z targetSdkVersion. Deweloperzy musieli jednocześnie podłączać kilka wersji tej samej biblioteki, co prowadziło do konfliktów zależności i wzrostu rozmiaru pliku APK.
AndroidX rozwiązał ten problem dzięki semantycznemu wersjonowaniu (SemVer). Teraz każda biblioteka to osobny artefakt Gradle z wersją w formacie MAJOR.MINOR.PATCH. Deweloper może aktualizować Room z 2.4.0 do 2.6.0, nie ruszając Activity, Fragment ani innych modułów.
Pierwsze stabilne wydanie AndroidX 1.0.0 miało miejsce w grudniu 2018 roku wraz z Android 9 Pie. Google ogłosiło, że Support Library przechodzi w tryb wsparcia i wszystkie nowe komponenty — Navigation, WorkManager, Compose — będą wydawane wyłącznie w ramach AndroidX. Ostatnia wersja Support Library — 28.0.0 — została wydana w 2019 roku.
Według Google I/O 2019, kluczowym powodem przejścia była potrzeba przyspieszenia wydawania aktualizacji. W starym modelu jedna biblioteka czekała na drugą z powodu wspólnej wersji pakietu. AndroidX usunął to blokowanie i Jetpack zaczął otrzymywać główne i pomniejsze wydania co 2–3 miesiące.
Główna różnica to przestrzeń nazw. Support Library używała pakietu android.support.*, a AndroidX przeszedł na androidx.*. Ta zmiana pozwoliła podzielić biblioteki na moduły funkcjonalne. Na przykład Fragment z Support Library nazywał się android.support.v4.app.Fragment, a w AndroidX — androidx.fragment.app.Fragment.
Druga ważna różnica to architektura. AndroidX jest dostarczany razem z Jetpack — zestawem zaleceń dotyczących architektury aplikacji. Jetpack obejmuje ViewModel, LiveData, Room, Navigation i WorkManager, które zostały zaprojektowane jako jedna ekosystem, a nie jako rozproszone narzędzia.
Wsteczna kompatybilność również się poprawiła. Jeśli Support Library obsługiwała Android 2.3+, to AndroidX gwarantuje działanie na urządzeniach z Android 4.0 (API 14) i nowszym — obejmuje to ponad 99% aktywnych urządzeń według Google Play Console 2024.
AndroidX obejmuje ponad 100 bibliotek podzielonych na grupy. Każda grupa odpowiada za określony obszar: UI, dane, nawigację, zadania w tle, multimedia i testowanie. Poniżej znajduje się przegląd kluczowych modułów.
androidx.core:core — podstawowa biblioteka, która zawiera wstecznie kompatybilne wersje systemowych API: NotificationCompat, ActivityCompat, ContextCompat. Moduł core-ktx udostępnia rozszerzenia Kotlin do pracy z plikami, SharedPreferences i elementami widoku.
Biblioteka androidx.activity:activity wprowadziła Activity Result API (registerForActivityResult), który zastąpił przestarzały startActivityForResult. Moduł fragment:fragment zarządza cyklem życia fragmentów i obsługuje FragmentManager dla transakcji i stosu wstecznego.
androidx.lifecycle — podstawa architektury Jetpack. LifecycleOwner i LifecycleObserver pozwalają komponentom reagować na zmiany cyklu życia Activity lub Fragment. ViewModel przechowuje dane przy obrocie ekranu, a LiveData powiadamia UI o zmianach w danych.
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 — potężny komponent do wyświetlania list i siatek. RecyclerView obsługuje LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration i animacje przez ItemAnimator. Biblioteka ListAdapter z AsyncListDiffer upraszcza aktualizację listy z automatycznym obliczaniem diff.
androidx.navigation:navigation — biblioteka do nawigacji między ekranami. Navigation Component współpracuje z NavHostFragment i NavController, obsługuje Safe Args do przekazywania typowanych parametrów i Deep Links dla linków zewnętrznych. NavGraph opisuje wszystkie trasy w pliku XML.
androidx.compose.ui — deklaratywny framework UI Jetpack Compose, zbudowany na Kotlin. W przeciwieństwie do systemu View, Compose przerysowuje tylko zmienione elementy poprzez recomposition. Komponenty Material Design 3 (Button, TextField, Scaffold) są dostępne w module material3.
| Biblioteka | Artefakt | Przeznaczenie |
|---|---|---|
| Fragment | androidx.fragment | Zarządzanie fragmentami i transakcjami |
| RecyclerView | androidx.recyclerview | Listy i siatki z optymalizacją |
| Navigation | androidx.navigation | Nawigacja między ekranami |
| Compose UI | androidx.compose.ui | Deklaratywny UI na Kotlin |
androidx.room:room — ORM do lokalnego przechowywania danych. Room generuje klasy DAO z adnotowanych zapytań SQLite, sprawdza składnię SQL na etapie kompilacji i obsługuje RxJava oraz Kotlin Flow. Wersja 2.6 zawiera wsparcie dla KSP do szybszego generowania kodu.
androidx.work:workmanager — biblioteka do zadań w tle z gwarantowanym wykonaniem. WorkManager obsługuje zadania okresowe, łańcuchy prac (beginWith, then) i kryteria uruchamiania (Constraints: sieć, ładowanie, pamięć). Nawet jeśli aplikacja jest zamknięta, WorkManager dostarcza zadanie po ponownym uruchomieniu urządzenia.
androidx.datastore:datastore — nowoczesny zamiennik SharedPreferences. DataStore używa Kotlin Coroutines i Flow, działa synchronicznie i asynchronicznie, eliminując blokowanie wątku UI. Preferences DataStore przechowuje proste pary klucz-wartość, a Proto DataStore — typowane obiekty przez Protocol Buffers.
Automatyczna migracja to zalecany przez Google sposób przejścia z Support Library na AndroidX. Android Studio od wersji 3.2 zawiera wbudowane narzędzie Refactor Migrate to AndroidX, które zastępuje przestrzenie nazw i aktualizuje zależności w build.gradle.
Przed migracją należy zaktualizować wersję compileSdk do 28 lub wyższej. Warto również upewnić się, że wszystkie biblioteki zewnętrzne obsługują AndroidX. Jeśli jakaś zależność jeszcze nie została zmigrowana, można użyć flagi android.enableJetifier=true w gradle.properties — automatycznie przepisuje ona bajtkod bibliotek zewnętrznych.
W Android Studio wybierz Refactor Migrate to AndroidX z menu. IDE przeskanuje cały projekt, znajdzie wszystkie importy z pakietu android.support.* i zastąpi je na androidx.*. Zaktualizują się również zależności w app/build.gradle — artefakty Support Library zostaną zastąpione odpowiednimi wersjami AndroidX.
Po migracji Gradle Sync może pokazać błędy, jeśli niektóre zależności nie zostały znalezione. Sprawdź listę używanych bibliotek w dokumentacji Google Maven — wszystkie artefakty AndroidX są opublikowane na google(). Jeśli biblioteka jest niedostępna, dodaj mavenCentral() w repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (przestarzałe)
// 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'
}
Jeśli projekt jest zbyt duży lub zawiera niestandardowe View z Support Library, automatyczna zamiana może być niekompletna. Ręcznie zastąp wszystkie ciągi w kodzie: zmień importy, atrybuty w XML (app/src/main/res) i odniesienia w manifeście. Dla atrybutów Support Library prefiks android: zmienia się na app: (np. app:cardCornerRadius zamiast android:cardCornerRadius).
Po ręcznej migracji sprawdź odniesienia R. Support Library eksportowała zasoby przez android.support.v7.appcompat.R, a AndroidX — przez androidx.appcompat.R. Uruchom wyszukiwanie w projekcie i zastąp wszystkie wzmianki starych ścieżek R. Kompilacja projektu powinna przechodzić bez błędów i ostrzeżeń deprecation.
Pierwszą zaletą AndroidX jest modułowość. Podłączasz tylko te biblioteki, których faktycznie używasz. Jeśli aplikacja potrzebuje tylko RecyclerView i Navigation, nie ma potrzeby ciągnąć całej Support Library ze wszystkimi komponentami View. Zmniejsza to rozmiar APK i przyspiesza budowanie projektu.
Drugą zaletą są regularne aktualizacje. Jetpack wydaje stabilne wersje co 1–3 miesiące. Room 2.6.0, wydany w 2024 roku, dodał obsługę KSP i Kotlin 2.0. Navigation 2.8.0 wprowadził bezpieczne typy tras oparte na serializacji Kotlinx Serialization. Deweloperzy otrzymują nowe możliwości bez czekania na kolejną wersję Androida.
Trzecią zaletą jest integracja z Kotlin. Wszystkie biblioteki AndroidX mają moduły -ktx z funkcjami rozszerzeń. viewLifecycleOwner.lifecycleScope uruchamia korutyny w kontekście fragmentu, collectLatest przetwarza Flow, a SharedFlow i StateFlow są w pełni kompatybilne z komponentami Lifecycle-aware. To sprawia, że kod jest bardziej zwięzły i bezpieczniejszy.
Wsteczna kompatybilność to kluczowa zaleta AndroidX w porównaniu z nowymi API platformy. Możesz używać AppCompatDelegate.setDefaultNightMode dla ciemnego motywu na Android 4.0+, NotificationCompat.setBubble dla bąbelków na Android 5.0+ i LocationRequestCompat dla fused location na Android 4.0+. Zasięg urządzeń sięga 99% bez zwiększania minimalnej wersji SDK.
Czwartą zaletą jest testowanie. AndroidX zawiera bibliotekę androidx.test do pisania testów instrumentalnych i modułowych. FragmentScenario i ActivityScenario pozwalają testować komponenty UI w izolacji, a TestNavHostController — sprawdzać nawigację bez uruchamiania rzeczywistego urządzenia. MockK i Robolectric uzupełniają ekosystem.
Często zadawane pytania
AndroidX używa przestrzeni nazw androidx.* zamiast android.support.*, ma niezależne wersjonowanie (SemVer), obejmuje biblioteki Jetpack i obsługuje rozszerzenia Kotlin -ktx. Support Library została zamrożona na wersji 28.0.0 w 2019 roku.
W Android Studio włącz flagę Use AndroidX w kroku tworzenia projektu. Dla istniejącego projektu dodaj android.useAndroidX=true i android.enableJetifier=true w gradle.properties. Następnie zastąp zależności w build.gradle na artefakty z grupy androidx.
Google Play wymaga, aby wszystkie aplikacje i aktualizacje używały AndroidX. Wsparcie dla Support Library zostało zakończone i nie otrzymuje ona poprawek bezpieczeństwa. Jeśli Twoja aplikacja jeszcze nie została zmigrowana, może to prowadzić do odrzucenia aktualizacji w Google Play Console.
Jetpack to zestaw bibliotek, narzędzi i zaleceń od Google do tworzenia aplikacji na Androida. AndroidX jest podstawą Jetpack. W skład Jetpack wchodzą Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) i Behavior (WorkManager, Navigation, CameraX).
Tak, Jetpack Compose sam jest częścią AndroidX (androidx.compose.ui). Biblioteki ViewModel, Navigation, Room i WorkManager są w pełni kompatybilne z Compose. Funkcje collectAsState() i collectAsStateWithLifecycle() zapewniają integrację Flow z funkcjami Compose.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również