AndroidX مجموعهای از کتابخانههای Jetpack از گوگل است که جایگزین Support Library قدیمی شده است. به گفته Google Developer Documentation, 2024، AndroidX اجزای سازگار با نسخههای قبلی را برای تمام نسخههای اندروید فراهم میکند و استاندارد توسعه مدرن اندروید است. کتابخانههای AndroidX شامل ابزارهایی برای رابط کاربری، ناوبری، کار با دادهها، دوربین و وظایف پسزمینه هستند.
نکات اصلی
AndroidX یک کتابخانه منبع باز است که بخشی از Android Jetpack میباشد. گوگل AndroidX را در سال ۲۰۱۸ به عنوان جایگزینی برای Support Library منتشر کرد که از سال ۲۰۱۱ اجزای سازگار با نسخههای قبلی را برای نسخههای قدیمی اندروید فراهم میکرد.
قبل از ظهور AndroidX، هر مؤلفه Support Library نسخه مخصوص به خود را داشت که به targetSdkVersion وابسته بود. توسعهدهندگان مجبور بودند همزمان چندین نسخه از یک کتابخانه را متصل کنند که منجر به تداخل وابستگیها و افزایش حجم فایل APK میشد.
AndroidX این مشکل را با نسخهگذاری معنایی (SemVer) حل کرد. اکنون هر کتابخانه یک مصنوع Gradle مجزا با نسخه در قالب MAJOR.MINOR.PATCH است. توسعهدهنده میتواند Room را از ۲.۴.۰ به ۲.۶.۰ بهروزرسانی کند بدون اینکه به Activity، Fragment یا سایر ماژولها دست بزند.
اولین انتشار پایدار AndroidX 1.0.0 در دسامبر ۲۰۱۸ همراه با Android 9 Pie انجام شد. گوگل اعلام کرد که Support Library به حالت پشتیبانی میرود و تمام مؤلفههای جدید — Navigation, WorkManager, Compose — فقط در ترکیب AndroidX منتشر خواهند شد. آخرین نسخه Support Library — ۲۸.۰.۰ — در سال ۲۰۱۹ منتشر شد.
طبق Google I/O 2019، دلیل اصلی این تغییر نیاز به تسریع در انتشار بهروزرسانیها بود. در مدل قدیمی، یک کتابخانه به دلیل نسخه واحد بسته منتظر کتابخانه دیگر میماند. AndroidX این انسداد را برطرف کرد و Jetpack شروع به دریافت انتشارهای اصلی و فرعی هر ۲–۳ ماه کرد.
تفاوت اصلی فضای نام است. 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 از اندروید ۲.۳+ پشتیبانی میکرد، AndroidX عملکرد روی دستگاههای اندروید ۴.۰ (API 14) و بالاتر را تضمین میکند — این بیش از ۹۹٪ دستگاههای فعال را بر اساس Google Play Console 2024 پوشش میدهد.
AndroidX شامل بیش از ۱۰۰ کتابخانه تقسیم شده به گروهها است. هر گروه مسئول یک حوزه خاص است: رابط کاربری، دادهها، ناوبری، وظایف پسزمینه، چندرسانهای و تست. در زیر مروری بر ماژولهای کلیدی ارائه شده است.
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 پشتیبانی میکند. نسخه ۲.۶ شامل پشتیبانی از KSP برای تولید سریعتر کد است.
androidx.work:workmanager — کتابخانه وظایف پسزمینه با اجرای تضمینی. WorkManager از وظایف دورهای، زنجیرههای کاری (beginWith, then) و معیارهای راهاندازی (Constraints: شبکه، شارژ، حافظه) پشتیبانی میکند. حتی اگر اپلیکیشن بسته باشد، WorkManager وظیفه را پس از راهاندازی مجدد دستگاه تحویل میدهد.
androidx.datastore:datastore — جایگزین مدرن SharedPreferences. DataStore از Kotlin Coroutines و Flow استفاده میکند، به صورت همزمان و ناهمزمان کار میکند و مسدودسازی رشته UI را حذف میکند. Preferences DataStore جفتهای ساده کلید-مقدار و Proto DataStore اشیاء تایپ شده را از طریق Protocol Buffers ذخیره میکند.
مهاجرت خودکار روش توصیه شده گوگل برای انتقال از Support Library به AndroidX است. Android Studio از نسخه ۳.۲ شامل ابزار داخلی Refactor Migrate to AndroidX است که فضاهای نام را جایگزین و وابستگیها را در build.gradle بهروزرسانی میکند.
قبل از مهاجرت باید نسخه compileSdk را به ۲۸ یا بالاتر بهروزرسانی کنید. همچنین باید مطمئن شوید که تمام کتابخانههای شخص ثالث از AndroidX پشتیبانی میکنند. اگر برخی وابستگی هنوز مهاجرت نکرده است، میتوانید از پرچم android.enableJetifier=true در gradle.properties استفاده کنید — این پرچم بایتکد کتابخانههای شخص ثالث را به طور خودکار بازنویسی میکند.
در Android Studio از منو Refactor Migrate to AndroidX را انتخاب کنید. IDE کل پروژه را اسکن میکند، تمام importها را از بسته 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 است، جایگزینی خودکار ممکن است کامل نباشد. تمام رشتهها را در کد به صورت دستی جایگزین کنید: importها، ویژگیها در 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 انتشارهای پایدار را هر ۱–۳ ماه یکبار منتشر میکند. Room ۲.۶.۰ که در سال ۲۰۲۴ منتشر شد، پشتیبانی از KSP و Kotlin ۲.۰ را اضافه کرد. Navigation ۲.۸.۰ مسیرهای ایمن بر اساس سریالسازی Kotlinx Serialization را معرفی کرد. توسعهدهندگان بدون انتظار برای نسخه بعدی اندروید قابلیتهای جدید را دریافت میکنند.
سومین مزیت — یکپارچهسازی با Kotlin. تمام کتابخانههای AndroidX ماژولهای -ktx با توابع توسعهدهنده دارند. viewLifecycleOwner.lifecycleScope کوروتینها را در زمینه فرگمنت راهاندازی میکند، collectLatest Flow را پردازش میکند و SharedFlow و StateFlow کاملاً با کامپوننتهای Lifecycle-aware سازگار هستند. این کار کد را مختصرتر و امنتر میکند.
سازگاری با نسخههای قبلی — مزیت کلیدی AndroidX در مقابل APIهای جدید پلتفرم. شما میتوانید از AppCompatDelegate.setDefaultNightMode برای تم تیره در اندروید ۴.۰+، NotificationCompat.setBubble برای حبابها در اندروید ۵.۰+ و LocationRequestCompat برای موقعیتیابی ترکیبی در اندروید ۴.۰+ استفاده کنید. پوشش دستگاهها بدون افزایش حداقل نسخه SDK به ۹۹٪ میرسد.
چهارمین مزیت — تست. AndroidX شامل کتابخانه androidx.test برای نوشتن تستهای ابزاری و واحد است. FragmentScenario و ActivityScenario امکان تست کامپوننتهای UI در انزوا را فراهم میکنند و TestNavHostController — بررسی ناوبری بدون راهاندازی دستگاه واقعی. MockK و Robolectric اکوسیستم را تکمیل میکنند.
سوالات متداول
AndroidX از فضای نام androidx.* به جای android.support.* استفاده میکند، نسخهگذاری مستقل (SemVer) دارد، کتابخانههای Jetpack را شامل میشود و از توسعهدهندههای Kotlin -ktx پشتیبانی میکند. Support Library در نسخه ۲۸.۰.۰ در سال ۲۰۱۹ متوقف شد.
در Android Studio پرچم Use AndroidX را در مرحله ایجاد پروژه فعال کنید. برای پروژه موجود android.useAndroidX=true و android.enableJetifier=true را به gradle.properties اضافه کنید. سپس وابستگیها را در build.gradle با مصنوعات از گروه androidx جایگزین کنید.
Google Play نیاز دارد که تمام اپلیکیشنها و بهروزرسانیها از AndroidX استفاده کنند. پشتیبانی از Support Library متوقف شده است و آن وصلههای امنیتی دریافت نمیکند. اگر اپلیکیشن شما هنوز مهاجرت نکرده است، این میتواند منجر به رد بهروزرسانی در Google Play Console شود.
Jetpack مجموعهای از کتابخانهها، ابزارها و توصیههای گوگل برای توسعه اپلیکیشنهای اندروید است. 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.