AndroidX ay isang set ng mga library ng Jetpack mula sa Google na pumalit sa lumang Support Library. Ayon sa Google Developer Documentation, 2024, ang AndroidX ay nagbibigay ng backward-compatible na mga component para sa lahat ng bersyon ng Android at ito ang pamantayan ng modernong Android development. Ang mga library ng AndroidX ay may kasamang mga tool para sa UI, navigation, pagtatrabaho sa data, camera, at background tasks.
Mga pangunahing punto
AndroidX ay isang open source library na bahagi ng Android Jetpack. Inilabas ng Google ang AndroidX noong 2018 bilang kapalit ng Support Library, na mula noong 2011 ay nagbibigay ng backward-compatible na mga component para sa lumang bersyon ng Android.
Bago lumitaw ang AndroidX, ang bawat component ng Support Library ay may sariling bersyon na nakatali sa targetSdkVersion. Kailangan ng mga developer na sabay na kumonekta ng maraming bersyon ng parehong library, na nagdulot ng mga conflict sa dependencies at paglaki ng laki ng APK file.
AndroidX ay nalutas ang problemang ito sa pamamagitan ng semantic versioning (SemVer). Ngayon ang bawat library ay isang hiwalay na Gradle artifact na may bersyon sa format na MAJOR.MINOR.PATCH. Maaaring i-update ng developer ang Room mula 2.4.0 hanggang 2.6.0 nang hindi hinahawakan ang Activity, Fragment, o iba pang module.
Ang unang stable release na AndroidX 1.0.0 ay naganap noong Disyembre 2018 kasama ng Android 9 Pie. Inanunsyo ng Google na ang Support Library ay lumipat sa maintenance mode at lahat ng bagong component — Navigation, WorkManager, Compose — ay ilalabas lamang sa loob ng AndroidX. Ang huling bersyon ng Support Library — 28.0.0 — ay inilabas noong 2019.
Ayon sa Google I/O 2019, ang pangunahing dahilan ng paglipat ay ang pangangailangan na pabilisin ang paglabas ng mga update. Sa lumang modelo, ang isang library ay naghihintay sa isa pa dahil sa iisang bersyon ng package. Inalis ng AndroidX ang pagbara na ito, at nagsimulang makatanggap ang Jetpack ng major at minor release tuwing 2-3 buwan.
Ang pangunahing pagkakaiba ay ang namespace. Gumamit ang Support Library ng package na android.support.*, habang lumipat ang AndroidX sa androidx.*. Ang pagbabagong ito ay nagbigay-daan sa paghihiwalay ng mga library sa functional modules. Halimbawa, ang Fragment mula sa Support Library ay tinawag na android.support.v4.app.Fragment, at sa AndroidX — androidx.fragment.app.Fragment.
Ang pangalawang mahalagang pagkakaiba ay ang arkitektura. Ang AndroidX ay ibinibigay kasama ng Jetpack — isang set ng mga rekomendasyon para sa arkitektura ng aplikasyon. Kasama sa Jetpack ang ViewModel, LiveData, Room, Navigation, at WorkManager, na idinisenyo bilang isang ecosystem, hindi bilang mga scattered utility.
Backward compatibility ay napabuti rin. Kung ang Support Library ay sumusuporta sa Android 2.3+, ginagarantiyahan ng AndroidX ang operasyon sa mga device na may Android 4.0 (API 14) at mas bago — ito ay sumasaklaw sa higit sa 99% ng mga aktibong device ayon sa Google Play Console 2024.
AndroidX ay may kasamang higit sa 100 library na nahahati sa mga grupo. Ang bawat grupo ay responsable para sa isang partikular na lugar: UI, data, navigation, background tasks, multimedia, at testing. Nasa ibaba ang isang pangkalahatang-ideya ng mga pangunahing module.
androidx.core:core — ang pangunahing library na naglalaman ng backward-compatible na bersyon ng system APIs: NotificationCompat, ActivityCompat, ContextCompat. Ang module na core-ktx ay nagbibigay ng Kotlin extension para sa pagtatrabaho sa mga file, SharedPreferences, at view elements.
Ang library na androidx.activity:activity ay nagpakilala ng Activity Result API (registerForActivityResult), na pumalit sa lumang startActivityForResult. Ang module na fragment:fragment ay namamahala sa lifecycle ng mga fragment at sumusuporta sa FragmentManager para sa mga transaksyon at back stack.
androidx.lifecycle — ang pundasyon ng arkitektura ng Jetpack. Ang LifecycleOwner at LifecycleObserver ay nagpapahintulot sa mga component na tumugon sa mga pagbabago sa lifecycle ng Activity o Fragment. Ang ViewModel ay nag-iingat ng data sa pag-ikot ng screen, at ang LiveData ay nag-aabiso sa UI tungkol sa mga pagbabago sa data.
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 — isang malakas na component para sa pagpapakita ng mga listahan at grid. Sinusuportahan ng RecyclerView ang LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration, at animation sa pamamagitan ng ItemAnimator. Ang library na ListAdapter na may AsyncListDiffer ay nagpapasimple ng pag-update ng listahan na may awtomatikong pagkalkula ng diff.
androidx.navigation:navigation — library para sa navigation sa pagitan ng mga screen. Ang Navigation Component ay gumagana sa NavHostFragment at NavController, sumusuporta sa Safe Args para sa pagpapasa ng mga naka-type na parameter at Deep Links para sa mga external na link. Inilalarawan ng NavGraph ang lahat ng ruta sa isang XML file.
androidx.compose.ui — ang declarative UI framework na Jetpack Compose, na binuo sa Kotlin. Hindi tulad ng View system, ang Compose ay nagre-redraw lamang ng mga nabagong elemento sa pamamagitan ng recomposition. Ang mga component ng Material Design 3 (Button, TextField, Scaffold) ay available sa module na material3.
| Library | Artifact | Layunin |
|---|---|---|
| Fragment | androidx.fragment | Pamamahala ng mga fragment at transaksyon |
| RecyclerView | androidx.recyclerview | Mga listahan at grid na may optimization |
| Navigation | androidx.navigation | Navigation sa pagitan ng mga screen |
| Compose UI | androidx.compose.ui | Declarative UI sa Kotlin |
androidx.room:room — ORM para sa lokal na pag-iimbak ng data. Ang Room ay bumubuo ng DAO classes mula sa annotated SQLite queries, sinusuri ang SQL syntax sa compilation stage, at sumusuporta sa RxJava at Kotlin Flow. Ang bersyon 2.6 ay may kasamang suporta para sa KSP para sa mas mabilis na pagbuo ng code.
androidx.work:workmanager — library para sa background tasks na may garantisadong execution. Sinusuportahan ng WorkManager ang periodic tasks, work chains (beginWith, then), at start criteria (Constraints: network, charging, memory). Kahit na sarado ang app, inihahatid ng WorkManager ang task pagkatapos i-restart ang device.
androidx.datastore:datastore — modernong kapalit ng SharedPreferences. Ang DataStore ay gumagamit ng Kotlin Coroutines at Flow, gumagana nang synchronously at asynchronously, inaalis ang pag-block ng UI thread. Ang Preferences DataStore ay nag-iimbak ng mga simpleng key-value pair, at ang Proto DataStore — naka-type na object sa pamamagitan ng Protocol Buffers.
Awtomatikong migration ay ang inirerekomendang paraan ng Google para lumipat mula sa Support Library patungo sa AndroidX. Ang Android Studio simula sa bersyon 3.2 ay may kasamang built-in na tool na Refactor Migrate to AndroidX, na pumapalit sa mga namespace at nag-a-update ng dependencies sa build.gradle.
Bago ang migration, kailangan mong i-update ang bersyon ng compileSdk sa 28 o mas mataas. Siguraduhin din na ang lahat ng third-party library ay sumusuporta sa AndroidX. Kung ang ilang dependency ay hindi pa na-migrate, maaari mong gamitin ang flag na android.enableJetifier=true sa gradle.properties — awtomatiko nitong isinusulat muli ang bytecode ng mga third-party library.
Sa Android Studio, piliin ang Refactor Migrate to AndroidX mula sa menu. I-scan ng IDE ang buong project, hahanapin ang lahat ng imports mula sa package na android.support.* at papalitan ang mga ito ng androidx.*. Maa-update din ang mga dependency sa app/build.gradle — ang Support Library artifacts ay papalitan ng kaukulang bersyon ng AndroidX.
Pagkatapos ng migration, ang Gradle Sync ay maaaring magpakita ng mga error kung ang ilang dependency ay hindi natagpuan. Suriin ang listahan ng mga ginamit na library sa dokumentasyon ng Google Maven — lahat ng AndroidX artifacts ay nai-publish sa google(). Kung hindi available ang library, idagdag ang mavenCentral() sa repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (luma na)
// 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'
}
Kung ang project ay masyadong malaki o naglalaman ng custom na View mula sa Support Library, ang awtomatikong pagpapalit ay maaaring hindi kumpleto. Manu-manong palitan ang lahat ng string sa code: baguhin ang imports, attributes sa XML (app/src/main/res), at references sa manifest. Para sa Support Library attributes, ang prefix na android: ay nagiging app: (halimbawa, app:cardCornerRadius sa halip na android:cardCornerRadius).
Pagkatapos ng manual migration, suriin ang R references. Ang Support Library ay nag-export ng resources sa pamamagitan ng android.support.v7.appcompat.R, at AndroidX sa pamamagitan ng androidx.appcompat.R. Magpatakbo ng paghahanap sa project at palitan ang lahat ng pagbanggit ng lumang R paths. Ang build ng project ay dapat pumasa nang walang error at deprecation warnings.
Ang unang benepisyo ng AndroidX ay modularity. Ikonekta mo lamang ang mga library na talagang ginagamit mo. Kung ang app ay nangangailangan lamang ng RecyclerView at Navigation, hindi na kailangang isama ang buong Support Library kasama ang lahat ng View components. Binabawasan nito ang laki ng APK at pinapabilis ang build ng project.
Ang pangalawang benepisyo — regular na mga update. Ang Jetpack ay naglalabas ng stable releases tuwing 1-3 buwan. Ang Room 2.6.0, na inilabas noong 2024, ay nagdagdag ng suporta para sa KSP at Kotlin 2.0. Ang Navigation 2.8.0 ay nagpakilala ng type-safe na ruta batay sa Kotlinx Serialization. Ang mga developer ay nakakakuha ng mga bagong kakayahan nang hindi naghihintay sa susunod na bersyon ng Android.
Ang pangatlong benepisyo — integrasyon sa Kotlin. Lahat ng AndroidX library ay may -ktx modules na may extension functions. Ang viewLifecycleOwner.lifecycleScope ay naglulunsad ng coroutines sa konteksto ng fragment, pinoproseso ng collectLatest ang Flow, at ang SharedFlow at StateFlow ay ganap na compatible sa Lifecycle-aware components. Ginagawa nitong mas maikli at ligtas ang code.
Backward compatibility — ang pangunahing bentahe ng AndroidX kumpara sa mga bagong platform APIs. Maaari mong gamitin ang AppCompatDelegate.setDefaultNightMode para sa dark theme sa Android 4.0+, NotificationCompat.setBubble para sa mga bubble sa Android 5.0+, at LocationRequestCompat para sa fused location sa Android 4.0+. Ang coverage ng device ay umaabot sa 99% nang walang pagtaas ng minimum SDK version.
Ang pang-apat na benepisyo — testing. Ang AndroidX ay may kasamang library na androidx.test para sa pagsulat ng instrumental at unit tests. Ang FragmentScenario at ActivityScenario ay nagpapahintulot sa pag-test ng UI components sa isolation, at TestNavHostController — suriin ang navigation nang hindi nagpapatakbo ng totoong device. Ang MockK at Robolectric ay nagkukumpleto sa ecosystem.
Mga madalas itanong
AndroidX ay gumagamit ng namespace na androidx.* sa halip na android.support.*, may independiyenteng versioning (SemVer), may kasamang Jetpack library, at sumusuporta sa Kotlin extensions -ktx. Ang Support Library ay na-freeze sa bersyon 28.0.0 noong 2019.
Sa Android Studio, i-on ang flag na Use AndroidX sa hakbang ng paggawa ng project. Para sa kasalukuyang project, idagdag ang android.useAndroidX=true at android.enableJetifier=true sa gradle.properties. Pagkatapos, palitan ang mga dependency sa build.gradle ng mga artifact mula sa grupong androidx.
Google Play ay nangangailangan na ang lahat ng app at update ay gumamit ng AndroidX. Ang suporta para sa Support Library ay itinigil at hindi ito nakakatanggap ng security patches. Kung ang iyong app ay hindi pa na-migrate, maaari itong humantong sa pagtanggi ng update sa Google Play Console.
Jetpack ay isang set ng mga library, tool, at rekomendasyon mula sa Google para sa pag-develop ng Android apps. Ang AndroidX ay ang pundasyon ng Jetpack. Kasama sa Jetpack ang Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView), at Behavior (WorkManager, Navigation, CameraX).
Oo, ang Jetpack Compose mismo ay bahagi ng AndroidX (androidx.compose.ui). Ang mga library na ViewModel, Navigation, Room, at WorkManager ay ganap na compatible sa Compose. Ang mga function na collectAsState() at collectAsStateWithLifecycle() ay nagbibigay ng integrasyon ng Flow sa Compose functions.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din